FAILURE MAP
← Case archive

FA-78836 / Broadcast timecode arithmetic / Open access

90 kHz presentation timestamp to frame label: nominal label rate · case 01

NTSC labels count only 29 frames per second.

Verified by executionVariant 1 · 9 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The nominal rate truncates 30000/1001 to 29.

VERIFIED REPAIR

Round the nominal rate up to the next integer.

Unsuccessful approach: Adding one after truncation breaks integer rates such as 25.

Case contract

PTS values are 33-bit 90 kHz ticks. The elapsed ticks since first_pts wrap modulo 2^33, except that a PTS less than 90000 ticks before first_pts (reordering pre-roll) returns None. The frame is the nearest frame at rate [N,D] (halves up); the label uses nominal rate ceil(N/D) and wraps at 24 hours.

Why this case matters

Timecode arithmetic errors misplace edits, commercial breaks and captions against the broadcast clock.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pts, first_pts, fps):
    WRAP=1<<33
    raw=pts-first_pts
    if -90000<raw<0:
        return None
    d=raw%WRAP
    num,den=fps
    n=(2*d*num+90000*den)//(180000*den)
    nominal=num//den
    return [n,'%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal)%60,n//nominal%60,n%nominal)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: nominal label rate', [7775910000, 8589844592, [24000, 1001]], [2071528, '23:58:33:16']), ('regression variant: nominal label rate', [810000, 900000, [30000, 1001]], [2860421, '02:29:07:11']), ('partial repair probe: nominal label rate', [7776000000, 0, [50, 1]], [4320000, '00:00:00:00']), ('partial repair variant: nominal label rate', [8589844591, 0, [50, 1]], [4772136, '02:30:42:36']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [127800, 126000, [25, 1]], [1, '00:00:00:01']), ('normal control', [901502, 900000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [8586333592, 8589933592, [30000, 1001]], [2859252, '02:28:28:12']), ('regression variant: nominal label rate', [8589754591, 8589844592, [24000, 1001]], [2288337, '02:29:07:09']), ('partial repair probe: nominal label rate', [8586244592, 8589844592, [25, 1]], [2385093, '02:30:03:18']), ('partial repair variant: nominal label rate', [8587234592, 900000, [50, 1]], [4770186, '02:30:03:36']), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [900001, 900000, [50, 1]], [0, '00:00:00:00']), ('normal control', [877, 8589933592, [50, 1]], [1, '00:00:00:01']), ('normal control', [3754, 0, [24000, 1001]], [1, '00:00:00:01'])], [('regression: nominal label rate', [35999, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [7776000000, 0, [24000, 1001]], [2071528, '23:58:33:16']), ('partial repair probe: nominal label rate', [7775910000, 8589844592, [25, 1]], [2160000, '00:00:00:00']), ('partial repair variant: nominal label rate', [7776126000, 126000, [50, 1]], [4320000, '00:00:00:00']), ('boundary control', [0, 45000, [25, 1]], None), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [126000, 126000, [25, 1]], [0, '00:00:00:00']), ('normal control', [3753, 0, [50, 1]], [2, '00:00:00:02']), ('normal control', [129754, 126000, [25, 1]], [1, '00:00:00:01'])], [('regression: nominal label rate', [36000, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [324900000, 900000, [24000, 1001]], [86314, '00:59:56:10']), ('partial repair probe: nominal label rate', [324126000, 126000, [50, 1]], [180000, '01:00:00:00']), ('partial repair variant: nominal label rate', [323999000, 8589933592, [50, 1]], [180000, '01:00:00:00']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('boundary control', [0, 45000, [25, 1]], None), ('normal control', [8589846469, 8589844592, [50, 1]], [1, '00:00:00:01']), ('normal control', [877, 8589933592, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [127502, 126000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [324126000, 126000, [24000, 1001]], [86314, '00:59:56:10']), ('regression variant: nominal label rate', [8586460592, 126000, [30000, 1001]], [2859252, '02:28:28:12']), ('partial repair probe: nominal label rate', [809999, 900000, [25, 1]], [2386068, '02:30:42:18']), ('partial repair variant: nominal label rate', [8586460592, 126000, [25, 1]], [2385093, '02:30:03:18']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [3754, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [801, 8589933592, [24000, 1001]], [0, '00:00:00:00']), ('normal control', [1502, 0, [50, 1]], [1, '00:00:00:01'])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: nominal label rate[2071528, '01:01:06:10'][2071528, '23:58:33:16']Failed
regression variant: nominal label rate[2860421, '03:23:55:06'][2860421, '02:29:07:11']Failed
partial repair probe: nominal label rate[4320000, '00:00:00:00'][4320000, '00:00:00:00']Passed
partial repair variant: nominal label rate[4772136, '02:30:42:36'][4772136, '02:30:42:36']Passed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[0, '00:00:00:00'][0, '00:00:00:00']Passed

SHA-256 / fe3176de72fb7b709ac380f8b118f0a8669ca726ec23141f5481c39fa3f2ea42

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pts, first_pts, fps):
    WRAP=1<<33
    raw=pts-first_pts
    if -90000<raw<0:
        return None
    d=raw%WRAP
    num,den=fps
    n=(2*d*num+90000*den)//(180000*den)
    nominal=num//den+1
    return [n,'%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal)%60,n//nominal%60,n%nominal)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: nominal label rate', [7775910000, 8589844592, [24000, 1001]], [2071528, '23:58:33:16']), ('regression variant: nominal label rate', [810000, 900000, [30000, 1001]], [2860421, '02:29:07:11']), ('partial repair probe: nominal label rate', [7776000000, 0, [50, 1]], [4320000, '00:00:00:00']), ('partial repair variant: nominal label rate', [8589844591, 0, [50, 1]], [4772136, '02:30:42:36']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [127800, 126000, [25, 1]], [1, '00:00:00:01']), ('normal control', [901502, 900000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [8586333592, 8589933592, [30000, 1001]], [2859252, '02:28:28:12']), ('regression variant: nominal label rate', [8589754591, 8589844592, [24000, 1001]], [2288337, '02:29:07:09']), ('partial repair probe: nominal label rate', [8586244592, 8589844592, [25, 1]], [2385093, '02:30:03:18']), ('partial repair variant: nominal label rate', [8587234592, 900000, [50, 1]], [4770186, '02:30:03:36']), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [900001, 900000, [50, 1]], [0, '00:00:00:00']), ('normal control', [877, 8589933592, [50, 1]], [1, '00:00:00:01']), ('normal control', [3754, 0, [24000, 1001]], [1, '00:00:00:01'])], [('regression: nominal label rate', [35999, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [7776000000, 0, [24000, 1001]], [2071528, '23:58:33:16']), ('partial repair probe: nominal label rate', [7775910000, 8589844592, [25, 1]], [2160000, '00:00:00:00']), ('partial repair variant: nominal label rate', [7776126000, 126000, [50, 1]], [4320000, '00:00:00:00']), ('boundary control', [0, 45000, [25, 1]], None), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [126000, 126000, [25, 1]], [0, '00:00:00:00']), ('normal control', [3753, 0, [50, 1]], [2, '00:00:00:02']), ('normal control', [129754, 126000, [25, 1]], [1, '00:00:00:01'])], [('regression: nominal label rate', [36000, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [324900000, 900000, [24000, 1001]], [86314, '00:59:56:10']), ('partial repair probe: nominal label rate', [324126000, 126000, [50, 1]], [180000, '01:00:00:00']), ('partial repair variant: nominal label rate', [323999000, 8589933592, [50, 1]], [180000, '01:00:00:00']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('boundary control', [0, 45000, [25, 1]], None), ('normal control', [8589846469, 8589844592, [50, 1]], [1, '00:00:00:01']), ('normal control', [877, 8589933592, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [127502, 126000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [324126000, 126000, [24000, 1001]], [86314, '00:59:56:10']), ('regression variant: nominal label rate', [8586460592, 126000, [30000, 1001]], [2859252, '02:28:28:12']), ('partial repair probe: nominal label rate', [809999, 900000, [25, 1]], [2386068, '02:30:42:18']), ('partial repair variant: nominal label rate', [8586460592, 126000, [25, 1]], [2385093, '02:30:03:18']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [3754, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [801, 8589933592, [24000, 1001]], [0, '00:00:00:00']), ('normal control', [1502, 0, [50, 1]], [1, '00:00:00:01'])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: nominal label rate[2071528, '23:58:33:16'][2071528, '23:58:33:16']Passed
regression variant: nominal label rate[2860421, '02:29:07:11'][2860421, '02:29:07:11']Passed
partial repair probe: nominal label rate[4320000, '23:31:45:45'][4320000, '00:00:00:00']Failed
partial repair variant: nominal label rate[4772136, '01:59:31:15'][4772136, '02:30:42:36']Failed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[0, '00:00:00:00'][0, '00:00:00:00']Passed

SHA-256 / 3d763692c343f7dbbc8fdd7b31060d04c46ebfb17ac9bc374b28ca5b1ef5e0d0

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pts, first_pts, fps):
    WRAP=1<<33
    raw=pts-first_pts
    if -90000<raw<0:
        return None
    d=raw%WRAP
    num,den=fps
    n=(2*d*num+90000*den)//(180000*den)
    nominal=-(-num//den)
    return [n,'%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal)%60,n//nominal%60,n%nominal)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: nominal label rate', [7775910000, 8589844592, [24000, 1001]], [2071528, '23:58:33:16']), ('regression variant: nominal label rate', [810000, 900000, [30000, 1001]], [2860421, '02:29:07:11']), ('partial repair probe: nominal label rate', [7776000000, 0, [50, 1]], [4320000, '00:00:00:00']), ('partial repair variant: nominal label rate', [8589844591, 0, [50, 1]], [4772136, '02:30:42:36']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [127800, 126000, [25, 1]], [1, '00:00:00:01']), ('normal control', [901502, 900000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [8586333592, 8589933592, [30000, 1001]], [2859252, '02:28:28:12']), ('regression variant: nominal label rate', [8589754591, 8589844592, [24000, 1001]], [2288337, '02:29:07:09']), ('partial repair probe: nominal label rate', [8586244592, 8589844592, [25, 1]], [2385093, '02:30:03:18']), ('partial repair variant: nominal label rate', [8587234592, 900000, [50, 1]], [4770186, '02:30:03:36']), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [900001, 900000, [50, 1]], [0, '00:00:00:00']), ('normal control', [877, 8589933592, [50, 1]], [1, '00:00:00:01']), ('normal control', [3754, 0, [24000, 1001]], [1, '00:00:00:01'])], [('regression: nominal label rate', [35999, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [7776000000, 0, [24000, 1001]], [2071528, '23:58:33:16']), ('partial repair probe: nominal label rate', [7775910000, 8589844592, [25, 1]], [2160000, '00:00:00:00']), ('partial repair variant: nominal label rate', [7776126000, 126000, [50, 1]], [4320000, '00:00:00:00']), ('boundary control', [0, 45000, [25, 1]], None), ('boundary control', [100, 8589931092, [25, 1]], [1, '00:00:00:01']), ('normal control', [126000, 126000, [25, 1]], [0, '00:00:00:00']), ('normal control', [3753, 0, [50, 1]], [2, '00:00:00:02']), ('normal control', [129754, 126000, [25, 1]], [1, '00:00:00:01'])], [('regression: nominal label rate', [36000, 126000, [24000, 1001]], [2288337, '02:29:07:09']), ('regression variant: nominal label rate', [324900000, 900000, [24000, 1001]], [86314, '00:59:56:10']), ('partial repair probe: nominal label rate', [324126000, 126000, [50, 1]], [180000, '01:00:00:00']), ('partial repair variant: nominal label rate', [323999000, 8589933592, [50, 1]], [180000, '01:00:00:00']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('boundary control', [0, 45000, [25, 1]], None), ('normal control', [8589846469, 8589844592, [50, 1]], [1, '00:00:00:01']), ('normal control', [877, 8589933592, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [127502, 126000, [24000, 1001]], [0, '00:00:00:00'])], [('regression: nominal label rate', [324126000, 126000, [24000, 1001]], [86314, '00:59:56:10']), ('regression variant: nominal label rate', [8586460592, 126000, [30000, 1001]], [2859252, '02:28:28:12']), ('partial repair probe: nominal label rate', [809999, 900000, [25, 1]], [2386068, '02:30:42:18']), ('partial repair variant: nominal label rate', [8586460592, 126000, [25, 1]], [2385093, '02:30:03:18']), ('boundary control', [1800, 0, [25, 1]], [1, '00:00:00:01']), ('boundary control', [1502, 0, [30000, 1001]], [1, '00:00:00:01']), ('normal control', [3754, 0, [25, 1]], [1, '00:00:00:01']), ('normal control', [801, 8589933592, [24000, 1001]], [0, '00:00:00:00']), ('normal control', [1502, 0, [50, 1]], [1, '00:00:00:01'])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: nominal label rate[2071528, '23:58:33:16'][2071528, '23:58:33:16']Passed
regression variant: nominal label rate[2860421, '02:29:07:11'][2860421, '02:29:07:11']Passed
partial repair probe: nominal label rate[4320000, '00:00:00:00'][4320000, '00:00:00:00']Passed
partial repair variant: nominal label rate[4772136, '02:30:42:36'][4772136, '02:30:42:36']Passed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
boundary control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[1, '00:00:00:01'][1, '00:00:00:01']Passed
normal control[0, '00:00:00:00'][0, '00:00:00:00']Passed

SHA-256 / 1a97675c0b583f260927b3666a37edf7526f177760cee591abe199cbc0ee2da2

Verification & scope

A deterministic bounded teaching model with a stipulated toy contract; it does not claim conformance to SMPTE or any broadcast standard. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:49:39.202189+00:00.

Case digest / 111be16e1e926dce37285e089c28b9e4ae15f0b48d29e41df4f9a9921f3f27d2