Re: The negative leap second
UTC works this way:
1 leap second, on either 31/12 or 30/6:
23:59:57
23:59:58
23:59:59
23:59:60
00:00:00
There can be 2 leap seconds too:
23:59:57
23:59:58
23:59:59
23:59:60
23:59:61
00:00:00
and an anti leap second:
23:59:57
23:59:58
00:00:00
However, most OSes and software has no idea this is happening. So Windows goes:
23:59:57
23:59:58
23:59:59
00:00:00 (wrong)
00:00:01 (wrong)
.
.
01:13:15 (wrong)
01:13:16 (wrong, but now randomly does an NTP update)
01:13:16 (right)
Linux armed with NTP and connected to a leap second aware NTP server:
23:59:57
23:59:58
23:59:59
23:59:59 (wrong, but knows it)
00:00:00
Google and (I think) Facebook want:
00:00:00 (midnight before the leap second)
00:00:01 (wrong, because they have redefined how long 1 second is)
00:00:02 (wrong, because they have redefined how long 1 second is)
.
.
23:59:57 (wrong, because they have redefined how long 1 second is)
23:59:58 (wrong, because they have redefined how long 1 second is)
23:59:59 (wrong, because they have redefined how long 1 second is)
00:00:00 (right, because of the slippage over the past day)
00:00:01 (right, because they've reverted to 1 second = 1 TAI second.
but for some reason Facebook couldn't make this work for an anti-leapsecond (they were predicting total destruction of their systems, an outcome I couldn't see any problems with...).
All of this could be solved if all IT / comms simply opted for a grand global "Switch to TAI" day, as pretty much all software works to TAI's timescale rules, not UTC's. If that happened, then calculations of time differences between recorded time events either side of the switch over would be in error by 37 seconds (the number of leap seconds since they were invented). But almost no one is going to care about that. The thing is that going forward, software, records and time difference calculations would be correct w.r.t. TAI's rules and current value, with no software changes anywhere.
The present situation is in effect already "let's do that", without the jump from UTC to TAI, but maybe some big jump in UTC later on. Let's do it just once.
Time is Fricking Complicated
TAI isn't perfect either, though the imperfection is nearly negligible. The current "second" is different to that used in TAI's earlier days, back in the 1970s. When they first had the idea of a network of synchronised atomic clocks around the world, they soon noticed the clocks diverging. They'd forgotten the reletavistic effects (Einstein!) on clocks being at different altitudes, and therefore being at different depths into the Earth's gravitational well. They corrected for that, but the net result is that the length of 1 second changed slightly for some people. What this means is that I cannot easily calculate to the nanosecond in today's seconds how old I am (being born before this correction to TAI). It also means that, whilst your atomic clock is capable of telling you what the time is at the reference altitude (sea level), your clock (at the top of a mountain) isn't running at that rate and isn't telling you that time... And when one has finished factoring general relativity into timekeeping properly, things get very complicated (IAU SOFA PDF).