On 2017-02-09 02:28 AM, Warner Losh wrote:
On Fri, Feb 3, 2017 at 4:30 PM, Brooks Harris <[email protected]> wrote:
If its after the Leap Second then your method doesn't work directly; you'd
need to figure it out and make an internal adjustment to the TAI-UTC value a
second *before* its supplied to you, right? See what I mean?
That would be a problem, yes. However, how do you know it is a leap
second w/o TAI-UTC changing? You'll need that metadata from elsewhere.
Yes. The need for the metadata in some form is unavoidable because the Leap Seconds are irregularly introduced in the past (history) and unpredicatble when they will be introduced in the future (announce and/or expiration). That's the whole point of it. Its not just mathematical. Its an algorithm that is partly mathematically calculable for the Gregorian part, but also requires the additional UTC metadata as an input to arrive at UTC YMDhms (or the reverse). That's where I've called it an "encoding". I'm not sure "encoding" is the best term, but the best I've found. Writing about the stuff in prose is difficult because so many different terms are used by so many folks from different backgrounds.
To do the leap second correctly, though, you'd need some warning
before the leap second  that it will, in fact, be a leap second.
Yes. That's where I illustrated using an "Is Leap Second" flag. How an "Is Leap Second" condition is detected depends partly on what you're dealing with. If the complete Leap Seconds table, announce, and expiration are available to you its simple enough - the Leap Second is the second *before* the [UTC date][TAI-UTC] as presented by the Leap Second tables. But if you're dealing with a real-time time-link protocol (GPS, PTP, NTP) you're either dependent on the UTC metadata supplied by the time-link, or you need to go elsewhere somehow to collect it. Unfortunately, each of those protocols use slightly different formats and terms for the variables and not all carry the TAI-UTC directly, only announce flags. This situation is a result of historical development in an environment lacking clear specification.

I'd love to know which spec actually states the offset changes where
you say, since it would resolve the ambiguity.
I don't think there is any that states it unambiguously. As we've discussed, ITU Rec 460 doesn't state this, and BIPM Circular T and IERS Bulletin C only *imply* it by their [UTC Date][TAI-UTC] values. What you'd wish to find is a clear statement like "The TAI-UTC value shall update immediately after the Leap Second, coincident with the midnight rollover of the UTC YMDhms date". Seems to me the best place for a statement like this would be in Rec 460, and if it existed it would head off misunderstanding.

But there is much "common practice" that follows, or at least seems to follow, that interpretation. As I've said I've heard it discussed and the consensus was that interpretation.

The one place I've seen it made very clear is by David Mills regarding NTP, and he extends the analysis to POSIX. This is, off course, only David Mill's explanation, not a dues-process specification, but his considerable authority lends weight.

The NTP Timescale and Leap Seconds
https://www.eecis.udel.edu/~mills/leap.html

Figure 1. NTP Leap Second Numbering shows the "TAI offset" incrementing after the Leap Second

Figure 2. NTP Offset In the Vicinity of a Leap Second shows it graphically, and the TAI-UTC value incrementing after the Leap Second. However, even here there's a bit of vagueness; note that the arrow of the preceding TAI-UTC value does not extend through the Leap Second to the midnight boundary.

We're not the only ones confused about this, as you know - I found this discussion -

Re: [AVTCORE] Leap seconds
https://www.ietf.org/mail-archive/web/avt/current/msg14829.html

Absent a spec, the
closest thing is decades of Bulletin C.

However, I owe Zefram an apology for being overly grumpy. I thought he
was being deliberately obtuse. In reality, his question TAI-UTC at
23:59:59 proved the undoing of what I was advocating. I'm sorry I
snapped at him. It was uncalled for.
Any technical topic is loaded with opinion and bias, but timekeeping is in a league of its own in eliciting passion and debate. Practical technical issues become entangled in discussions of Relativity, Quantum Mechanics, spirituality, mysticism, and cultural world view. Native languages add another level of potential misunderstanding. The standards are maintained by international standards bodies that contend with international politics and cultures which may add whole other levels of complexity not directly connected to the technical details.

For the most part those of us on this list are seeking academically correct practical technical solutions. The terms and expressions are important, and sometimes are misleading if we're not careful. I've been guilty of this too.

The math works perfectly if you use 60 seconds for the length of the
minute before the leap second (the second he had in mind), and 61
after. Not very satisfying, and a hole I had missed. Thinking through
what that's the case was helpful. It makes some sense that this would
be the case since the leap second isn't part of UTC until it is
inserted. Instead of modify the method to cope, I concluded something
else. It shows the real crux of my misunderstanding of the nature
TAI-UTC.

The problem is a confusion between an interval in UTC time, and a
difference between two time scales when one of the time scales is
using a second label not in the other. A interval in UTC time is well
defined and unambiguous. Applying my method to that problem works
flawlessly (w/o the suggested 60s kludge above) for computation of
intervals within UTC time. Since it works there, one would think it
would be a good fit for TAI-UTC since that looks like an interval.

However, that's not what TAI-UTC actually is. It isn't an interval,
despite being subtraction of two times. They are exactly the same
time, so the interval between them is always 0. TAI-UTC is actually an
offset between two sets of second labels. One can do that math two
ways to get the offset: my way and the conventional way. After reading
the standard, which is silent on the issue, neither is inherently
right or wrong. It's unspecified in TF.460. However, decades of common
usage (Bulletin C) strongly suggests the more conventional way is
what's more accepted. Since there's weirdness in what I was
advocating, and since it flies in the face of tradition, I'll concede
the point.

Sorry for the noise.
I don't think its "noise". The discussion is at the apex of UTC timekeeping and is once again informative. It helps us all refine the ways we discuss it. Maybe, just maybe, if there were a consensus amongst experts it might somehow find its way its way to refinement of the specs themselves. How would you suggest, or imagine, the standards could be improved?

-Brooks

_______________________________________________
LEAPSECS mailing list
[email protected]
https://pairlist6.pair.net/mailman/listinfo/leapsecs

Reply via email to