FA-78611 / Broadcast timecode arithmetic / Open access
Non-drop label to wall clock at pulled-down rates: minute field · case 01
Labels past the first hour show minute fields above 59.
ROOT CAUSE
The minute field is not reduced modulo 60.
VERIFIED REPAIR
Reduce total minutes modulo 60.
Unsuccessful approach: Dividing frames by 60 ignores the frame rate.
Case contract
Rates "23.976", "29.97", "59.94" run at nominal*1000/1001 frames per second while labels count nominal frames per second (non-drop). mode "to_ms": label to elapsed milliseconds, rounded half up. mode "to_tc": milliseconds to the nearest frame (half up), formatted as a non-drop label wrapping 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(value, rate, mode):
nominal={'23.976':24,'29.97':30,'59.94':60,'24':24,'25':25,'30':30}[rate]
den=1001 if '.' in rate else 1000
num=nominal*1000
if mode=='to_ms':
h,m,s,f=map(int,value.split(':'))
n=((h*60+m)*60+s)*nominal+f
return (2*n*1000*den+num)//(2*num)
n=(2*value*num+1000*den)//(2000*den)
return '%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal),n//nominal%60,n%nominal)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: minute field', [3603600, '23.976', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [86399999, '24', 'to_tc'], '00:00:00:00'), ('partial repair probe: minute field', [1001, '59.94', 'to_tc'], '00:00:01:00'), ('partial repair variant: minute field', [55101985, '23.976', 'to_tc'], '15:17:26:23'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', ['23:01:00:12', '30', 'to_ms'], 82860400)], [('regression: minute field', [86399999, '25', 'to_tc'], '00:00:00:00'), ('regression variant: minute field', [3603600, '59.94', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair variant: minute field', [41347730, '25', 'to_tc'], '11:29:07:18'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', ['10:59:00:45', '23.976', 'to_ms'], 39581417), ('normal control', ['01:01:01:36', '30', 'to_ms'], 3662200), ('normal control', ['23:59:59:15', '59.94', 'to_ms'], 86485649)], [('regression: minute field', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('regression variant: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair probe: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair variant: minute field', [25875768, '30', 'to_tc'], '07:11:15:23'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('normal control', [150, '29.97', 'to_tc'], '00:00:00:04'), ('normal control', ['01:01:01:15', '23.976', 'to_ms'], 3665287), ('normal control', [0, '23.976', 'to_tc'], '00:00:00:00')], [('regression: minute field', [3600000, '30', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [3600000, '24', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [2167463, '25', 'to_tc'], '00:36:07:12'), ('partial repair variant: minute field', [86399999, '29.97', 'to_tc'], '23:58:33:21'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', [60, '25', 'to_tc'], '00:00:00:02'), ('normal control', ['01:01:59:45', '25', 'to_ms'], 3720800)], [('regression: minute field', [3603600, '29.97', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair probe: minute field', [1020, '59.94', 'to_tc'], '00:00:01:01'), ('partial repair variant: minute field', [23411198, '24', 'to_tc'], '06:30:11:05'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [250, '24', 'to_tc'], '00:00:00:06'), ('normal control', ['23:59:00:06', '25', 'to_ms'], 86340240), ('normal control', ['01:59:00:12', '24', 'to_ms'], 7140500)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: minute field | 01:60:00:00 | 01:00:00:00 | Failed |
| regression variant: minute field | 00:1440:00:00 | 00:00:00:00 | Failed |
| partial repair probe: minute field | 00:00:01:00 | 00:00:01:00 | Passed |
| partial repair variant: minute field | 15:917:26:23 | 15:17:26:23 | Failed |
| boundary control | 3603600 | 3603600 | Passed |
| boundary control | 42 | 42 | Passed |
| normal control | 40 | 40 | Passed |
| normal control | 00:00:00:00 | 00:00:00:00 | Passed |
| normal control | 82860400 | 82860400 | Passed |
SHA-256 / b46c25a52e0b28d81eebb2c547cae39e036e5612dffef8fc8f63460e578fc8a4
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(value, rate, mode):
nominal={'23.976':24,'29.97':30,'59.94':60,'24':24,'25':25,'30':30}[rate]
den=1001 if '.' in rate else 1000
num=nominal*1000
if mode=='to_ms':
h,m,s,f=map(int,value.split(':'))
n=((h*60+m)*60+s)*nominal+f
return (2*n*1000*den+num)//(2*num)
n=(2*value*num+1000*den)//(2000*den)
return '%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//60%60,n//nominal%60,n%nominal)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: minute field', [3603600, '23.976', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [86399999, '24', 'to_tc'], '00:00:00:00'), ('partial repair probe: minute field', [1001, '59.94', 'to_tc'], '00:00:01:00'), ('partial repair variant: minute field', [55101985, '23.976', 'to_tc'], '15:17:26:23'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', ['23:01:00:12', '30', 'to_ms'], 82860400)], [('regression: minute field', [86399999, '25', 'to_tc'], '00:00:00:00'), ('regression variant: minute field', [3603600, '59.94', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair variant: minute field', [41347730, '25', 'to_tc'], '11:29:07:18'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', ['10:59:00:45', '23.976', 'to_ms'], 39581417), ('normal control', ['01:01:01:36', '30', 'to_ms'], 3662200), ('normal control', ['23:59:59:15', '59.94', 'to_ms'], 86485649)], [('regression: minute field', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('regression variant: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair probe: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair variant: minute field', [25875768, '30', 'to_tc'], '07:11:15:23'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('normal control', [150, '29.97', 'to_tc'], '00:00:00:04'), ('normal control', ['01:01:01:15', '23.976', 'to_ms'], 3665287), ('normal control', [0, '23.976', 'to_tc'], '00:00:00:00')], [('regression: minute field', [3600000, '30', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [3600000, '24', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [2167463, '25', 'to_tc'], '00:36:07:12'), ('partial repair variant: minute field', [86399999, '29.97', 'to_tc'], '23:58:33:21'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', [60, '25', 'to_tc'], '00:00:00:02'), ('normal control', ['01:01:59:45', '25', 'to_ms'], 3720800)], [('regression: minute field', [3603600, '29.97', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair probe: minute field', [1020, '59.94', 'to_tc'], '00:00:01:01'), ('partial repair variant: minute field', [23411198, '24', 'to_tc'], '06:30:11:05'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [250, '24', 'to_tc'], '00:00:00:06'), ('normal control', ['23:59:00:06', '25', 'to_ms'], 86340240), ('normal control', ['01:59:00:12', '24', 'to_ms'], 7140500)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: minute field | 01:00:00:00 | 01:00:00:00 | Passed |
| regression variant: minute field | 00:00:00:00 | 00:00:00:00 | Passed |
| partial repair probe: minute field | 00:01:01:00 | 00:00:01:00 | Failed |
| partial repair variant: minute field | 15:58:26:23 | 15:17:26:23 | Failed |
| boundary control | 3603600 | 3603600 | Passed |
| boundary control | 42 | 42 | Passed |
| normal control | 40 | 40 | Passed |
| normal control | 00:00:00:00 | 00:00:00:00 | Passed |
| normal control | 82860400 | 82860400 | Passed |
SHA-256 / 3a3f8eaac2fc3f262d0c7f6dc51e5331ba60ac4e68c4ccc032481a7028b21924
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(value, rate, mode):
nominal={'23.976':24,'29.97':30,'59.94':60,'24':24,'25':25,'30':30}[rate]
den=1001 if '.' in rate else 1000
num=nominal*1000
if mode=='to_ms':
h,m,s,f=map(int,value.split(':'))
n=((h*60+m)*60+s)*nominal+f
return (2*n*1000*den+num)//(2*num)
n=(2*value*num+1000*den)//(2000*den)
return '%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: minute field', [3603600, '23.976', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [86399999, '24', 'to_tc'], '00:00:00:00'), ('partial repair probe: minute field', [1001, '59.94', 'to_tc'], '00:00:01:00'), ('partial repair variant: minute field', [55101985, '23.976', 'to_tc'], '15:17:26:23'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', ['23:01:00:12', '30', 'to_ms'], 82860400)], [('regression: minute field', [86399999, '25', 'to_tc'], '00:00:00:00'), ('regression variant: minute field', [3603600, '59.94', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair variant: minute field', [41347730, '25', 'to_tc'], '11:29:07:18'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', ['10:59:00:45', '23.976', 'to_ms'], 39581417), ('normal control', ['01:01:01:36', '30', 'to_ms'], 3662200), ('normal control', ['23:59:59:15', '59.94', 'to_ms'], 86485649)], [('regression: minute field', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('regression variant: minute field', [3603600, '24', 'to_tc'], '01:00:03:14'), ('partial repair probe: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair variant: minute field', [25875768, '30', 'to_tc'], '07:11:15:23'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('normal control', [150, '29.97', 'to_tc'], '00:00:00:04'), ('normal control', ['01:01:01:15', '23.976', 'to_ms'], 3665287), ('normal control', [0, '23.976', 'to_tc'], '00:00:00:00')], [('regression: minute field', [3600000, '30', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [3600000, '24', 'to_tc'], '01:00:00:00'), ('partial repair probe: minute field', [2167463, '25', 'to_tc'], '00:36:07:12'), ('partial repair variant: minute field', [86399999, '29.97', 'to_tc'], '23:58:33:21'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', [60, '25', 'to_tc'], '00:00:00:02'), ('normal control', ['01:01:59:45', '25', 'to_ms'], 3720800)], [('regression: minute field', [3603600, '29.97', 'to_tc'], '01:00:00:00'), ('regression variant: minute field', [32276345, '30', 'to_tc'], '08:57:56:10'), ('partial repair probe: minute field', [1020, '59.94', 'to_tc'], '00:00:01:01'), ('partial repair variant: minute field', [23411198, '24', 'to_tc'], '06:30:11:05'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [250, '24', 'to_tc'], '00:00:00:06'), ('normal control', ['23:59:00:06', '25', 'to_ms'], 86340240), ('normal control', ['01:59:00:12', '24', 'to_ms'], 7140500)]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: minute field | 01:00:00:00 | 01:00:00:00 | Passed |
| regression variant: minute field | 00:00:00:00 | 00:00:00:00 | Passed |
| partial repair probe: minute field | 00:00:01:00 | 00:00:01:00 | Passed |
| partial repair variant: minute field | 15:17:26:23 | 15:17:26:23 | Passed |
| boundary control | 3603600 | 3603600 | Passed |
| boundary control | 42 | 42 | Passed |
| normal control | 40 | 40 | Passed |
| normal control | 00:00:00:00 | 00:00:00:00 | Passed |
| normal control | 82860400 | 82860400 | Passed |
SHA-256 / 3e0b837ae219fee5da723a9866c0faef74f7f177ca2a1375e421eb133f9aa1ef
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:36.737321+00:00.
Case digest / 8d797ee58458c09f9ba754df97aab6e4e4e038d3f4b2b25757c75659ac37b080