On 2026-07-17 14:02, Doug Ewell via tz wrote:
I sure hope I’ve never built software that subtracts one second by skipping two.
Good catch. This reminds me of the error in C89, which allowed two
adjacent positive leap seconds. That mistake wasn't fixed until C99 and
POSIX.1-2001, and a lot of popular software still supports the mistake.
For example, although Python 3.14.6 rejects out-of-range seconds counts,
it allows the counts up through 61, i.e., it mimics the C89 error:
>>> import time
>>> time.asctime((2026, 12, 31, 23, 59, 59, 3, 365, 0))
'Thu Dec 31 23:59:59 2026'
>>> time.asctime((2026, 12, 31, 23, 59, 60, 3, 365, 0))
'Thu Dec 31 23:59:60 2026'
>>> time.asctime((2026, 12, 31, 23, 59, 61, 3, 365, 0))
'Thu Dec 31 23:59:61 2026'
>>> time.asctime((2026, 12, 31, 23, 59, 62, 3, 365, 0))
Traceback (most recent call last):
File "<python-input-4>", line 1, in <module>
time.asctime((2026, 12, 31, 23, 59, 62, 3, 365, 0))
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: seconds out of range
For what it's worth, in a hypothetical and impractical approach where we
continued to insert one or two leap seconds as needed, possibly in every
minute, I estimate we could keep that up for over 100 million years
before an Earth day would be so long that we'd at least occasionally
have to go to three inserted leap seconds per minute. It's unlikely that
this sort of thing is what C89's authors and Python's developers were
thinking of.