FAILURE MAP
← Case archive

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.

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

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 fixtureActualExpectedOutcome
regression: minute field01:60:00:0001:00:00:00Failed
regression variant: minute field00:1440:00:0000:00:00:00Failed
partial repair probe: minute field00:00:01:0000:00:01:00Passed
partial repair variant: minute field15:917:26:2315:17:26:23Failed
boundary control36036003603600Passed
boundary control4242Passed
normal control4040Passed
normal control00:00:00:0000:00:00:00Passed
normal control8286040082860400Passed

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 fixtureActualExpectedOutcome
regression: minute field01:00:00:0001:00:00:00Passed
regression variant: minute field00:00:00:0000:00:00:00Passed
partial repair probe: minute field00:01:01:0000:00:01:00Failed
partial repair variant: minute field15:58:26:2315:17:26:23Failed
boundary control36036003603600Passed
boundary control4242Passed
normal control4040Passed
normal control00:00:00:0000:00:00:00Passed
normal control8286040082860400Passed

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 fixtureActualExpectedOutcome
regression: minute field01:00:00:0001:00:00:00Passed
regression variant: minute field00:00:00:0000:00:00:00Passed
partial repair probe: minute field00:00:01:0000:00:01:00Passed
partial repair variant: minute field15:17:26:2315:17:26:23Passed
boundary control36036003603600Passed
boundary control4242Passed
normal control4040Passed
normal control00:00:00:0000:00:00:00Passed
normal control8286040082860400Passed

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