Rolling leap seconds were meant to accommodate the New York Times Square ball drop; at least in some leap-second years, there'd be a "3...2...1...leap...Happy New Year" countdown, placing the leap second at midnight New York time rather than midnight London time.

    @dashdashado


On Sun, Sep 12, 2021 at 9:43 PM Paul Eggert via tz <tz@iana.org> wrote:
* NEWS, zic.8: Mention this.
* zic.c (leapadd): Report an error if the user tries it.
---
 NEWS  | 3 +++
 zic.8 | 3 +++
 zic.c | 4 ++++
 3 files changed, 10 insertions(+)

diff --git a/NEWS b/NEWS
index 1b5535a..62a7ba2 100644
--- a/NEWS
+++ b/NEWS
@@ -137,6 +137,9 @@ Unreleased, experimental changes
     last time transition disagreed with the TZ string, contrary to
     Internet RFC 8563 section 3.3.

+    zic -r now reports an error if given rolling leap seconds, as this
+    usage has never generally worked and is evidently unused.
+
     zic now generates a POSIX-conforming TZ string for TZif files
     where all-year DST is predicted for the indefinite future.
     For example, for all-year Eastern Daylight Time, zic now generates
diff --git a/zic.8 b/zic.8
index b77841b..3023ebe 100644
--- a/zic.8
+++ b/zic.8
@@ -709,6 +709,9 @@ or
 .q "Rolling"
 if the leap second time given by the other fields should be interpreted as
 local (wall clock) time.
+(Rolling leap seconds are not supported if the
+.B \*-r
+option is used.)
 .PP
 The expiration line, if present, has the form:
 .nf
diff --git a/zic.c b/zic.c
index e2a7e13..b06ef66 100644
--- a/zic.c
+++ b/zic.c
@@ -3144,6 +3144,10 @@ leapadd(zic_t t, int correction, int rolling)
                error(_("too many leap seconds"));
                exit(EXIT_FAILURE);
        }
+       if (rolling && (lo_time != min_time || hi_time != max_time)) {
+         error(_("Rolling leap seconds not supported with -r"));
+         exit(EXIT_FAILURE);
+       }
        for (i = 0; i < leapcnt; ++i)
                if (t <= trans[i])
                        break;
--
2.30.2