Re: [LEAPSECS]Comparing Time Scales

From: Tim Shepard <>
Date: Sat, 04 Feb 2006 03:30:03 -0500

> No. The article specifically says that after it the system time gets
> to ,600, it is decremented by one and there is specific code in the
> code that returns the system time to applications that makes it stand
> still. The second isn't *NOT* repeated. Repeat: The second is *NOT*
> repeated in what they said. Time stands still outside of the kernel,
> while inside the kernel the last second of the day *IS* repeated,
> hence the need for the limiter that the article talks about.
> Not all kernels keep time standing nearly still during the leap second
> (since that has other bad effects). Some expose this decrement to the
> users. The highlighed part of what I quoted said exactly this.
> I've actually implemented this for FreeBSD. You are arguing theory,
> and I'm arguing the fine points of an actual, real implementation.

But there's a difference between NTP timestamps, and the details of
the implementation of a system which uses NTP for synchronization.

The NTP timestamps have more than 64-bits in them when you include the
leap warning bits. NTP timestamps do not repeat any seconds when a
leap second occurs.

Note that in Figure 8 in RFC-1305 the sequence of NTP timestamps are:

2,871,590,399 +
2,871,590,400 +

The plus represents the leap warning bits indicating an upcoming (or
in-progress) leap second insertion. There are four distinct seconds,
each with its own unique timestamp. I'll extend this to include half
seconds, just to be very clear:

2,871,590,398.5 +
2,871,590,399.0 +
2,871,590,399.5 +
2,871,590,400.0 +
2,871,590,400.5 +

When the leap warning bits are included, each point in time has a
unique time stamp (to the resoultion of the NTP timestamp, which is
better than a nanosecond with all 32 bits of fraction).

A computer system could represent UTC time in a way which also makes
this clear, for example by a structure or abstract data type which
includes in it (1) the day number and (2) how-many nanoseconds are we
into this day. When executing a leap second insertion, we would get
all the way up to 86,400,999,999,999 nano seconds in the day before we
wrapped around that field to zero and incremented the day number (one
nanosecond later).

                        -Tim Shepard
Received on Sat Feb 04 2006 - 11:11:38 PST

This archive was generated by hypermail 2.3.0 : Sat Sep 04 2010 - 09:44:55 PDT