The hexadecimal value 0x80000000 is too large to be represented as a signed 32bit integer. Therefore the default type for the constant is an unsigned 32bit integer. This is a bit annoying because the timezone field is actually defined as a signed integer, and thus comparisions produce -Wsign-compare compiler warnings. Fixed by switching to INT_MIN, which is the same underlying value but interpreted as a signed integer.