FAILURE MAP
← Case archive

FA-78431 / Broadcast timecode arithmetic / Open access

Frame count to drop-frame 29.97 label: minute field · case 01

Minute fields jump ahead late in the hour.

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

ROOT CAUSE

The minute field divides the adjusted label count by the real 1798 frames per minute.

VERIFIED REPAIR

Derive the minute from the nominal label count, 1800 labels per minute.

Unsuccessful approach: Deriving minutes from ten-minute blocks drops the single minutes.

Case contract

Convert a non-negative frame count (negative counts return None; counts wrap to the 2589408-frame drop-frame day) to an HH:MM:SS;FF 29.97 drop-frame label: 18 labels are skipped per 10-minute block of 17982 frames, and labels ;00/;01 are skipped at each minute not divisible by ten.

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(frames):
    if frames<0:
        return None
    frames%=2589408
    d,mrem=divmod(frames,17982)
    add=18*d
    if mrem>=2:
        add+=2*((mrem-2)//1798)
    n=frames+add
    ff=n%30
    ss=n//30%60
    mm=n//1798%60
    hh=n//108000
    return '%02d:%02d:%02d;%02d'%(hh,mm,ss,ff)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: minute field', [1799], '00:00:59;29'), ('regression variant: minute field', [5138128], '23:37:22;12'), ('partial repair probe: minute field', [2589407], '23:59:59;29'), ('partial repair variant: minute field', [1183387], '10:58:05;23'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [107892], '01:00:00;00'), ('normal control', [-2], None), ('normal control', [-1641352], None)], [('regression: minute field', [107891], '00:59:59;29'), ('regression variant: minute field', [2576030], '23:52:33;18'), ('partial repair probe: minute field', [52594], '00:29:14;28'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [107892], '01:00:00;00'), ('boundary control', [17982], '00:10:00;00'), ('normal control', [35964], '00:20:00;00'), ('normal control', [701299], '06:30:00;01'), ('normal control', [-464827], None)], [('regression: minute field', [2589407], '23:59:59;29'), ('regression variant: minute field', [666705], '06:10:45;21'), ('partial repair probe: minute field', [3372691], '07:15:35;17'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [0], '00:00:00;00'), ('boundary control', [107892], '01:00:00;00'), ('normal control', [143856], '01:20:00;00'), ('normal control', [2], '00:00:00;02'), ('normal control', [107893], '01:00:00;01')], [('regression: minute field', [3372691], '07:15:35;17'), ('regression variant: minute field', [2535623], '23:30:05;11'), ('partial repair probe: minute field', [683315], '06:19:59;29'), ('partial repair variant: minute field', [757044], '07:01:00;02'), ('boundary control', [-1], None), ('boundary control', [0], '00:00:00;00'), ('normal control', [485515], '04:30:00;01'), ('normal control', [179822], '01:40:00;02'), ('normal control', [629371], '05:50:00;01')], [('regression: minute field', [683315], '06:19:59;29'), ('regression variant: minute field', [1346634], '12:28:52;22'), ('partial repair probe: minute field', [5138128], '23:37:22;12'), ('partial repair variant: minute field', [3599], '00:02:00;03'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [575425], '05:20:00;01'), ('normal control', [-2413730], None), ('normal control', [-1030669], None)]]
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 field00:01:59;2900:00:59;29Failed
regression variant: minute field23:38:22;1223:37:22;12Failed
partial repair probe: minute field23:01:59;2923:59:59;29Failed
partial repair variant: minute field10:58:05;2310:58:05;23Passed
boundary control00:10:00;0000:10:00;00Passed
boundary controlNoneNonePassed
normal control01:00:00;0001:00:00;00Passed
normal controlNoneNonePassed
normal controlNoneNonePassed

SHA-256 / f0c80e76f18cbe296e39792f0cc4318c98c13df56a10a3425fdba76d5fb8399b

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(frames):
    if frames<0:
        return None
    frames%=2589408
    d,mrem=divmod(frames,17982)
    add=18*d
    if mrem>=2:
        add+=2*((mrem-2)//1798)
    n=frames+add
    ff=n%30
    ss=n//30%60
    mm=n//17982*10%60
    hh=n//108000
    return '%02d:%02d:%02d;%02d'%(hh,mm,ss,ff)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: minute field', [1799], '00:00:59;29'), ('regression variant: minute field', [5138128], '23:37:22;12'), ('partial repair probe: minute field', [2589407], '23:59:59;29'), ('partial repair variant: minute field', [1183387], '10:58:05;23'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [107892], '01:00:00;00'), ('normal control', [-2], None), ('normal control', [-1641352], None)], [('regression: minute field', [107891], '00:59:59;29'), ('regression variant: minute field', [2576030], '23:52:33;18'), ('partial repair probe: minute field', [52594], '00:29:14;28'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [107892], '01:00:00;00'), ('boundary control', [17982], '00:10:00;00'), ('normal control', [35964], '00:20:00;00'), ('normal control', [701299], '06:30:00;01'), ('normal control', [-464827], None)], [('regression: minute field', [2589407], '23:59:59;29'), ('regression variant: minute field', [666705], '06:10:45;21'), ('partial repair probe: minute field', [3372691], '07:15:35;17'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [0], '00:00:00;00'), ('boundary control', [107892], '01:00:00;00'), ('normal control', [143856], '01:20:00;00'), ('normal control', [2], '00:00:00;02'), ('normal control', [107893], '01:00:00;01')], [('regression: minute field', [3372691], '07:15:35;17'), ('regression variant: minute field', [2535623], '23:30:05;11'), ('partial repair probe: minute field', [683315], '06:19:59;29'), ('partial repair variant: minute field', [757044], '07:01:00;02'), ('boundary control', [-1], None), ('boundary control', [0], '00:00:00;00'), ('normal control', [485515], '04:30:00;01'), ('normal control', [179822], '01:40:00;02'), ('normal control', [629371], '05:50:00;01')], [('regression: minute field', [683315], '06:19:59;29'), ('regression variant: minute field', [1346634], '12:28:52;22'), ('partial repair probe: minute field', [5138128], '23:37:22;12'), ('partial repair variant: minute field', [3599], '00:02:00;03'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [575425], '05:20:00;01'), ('normal control', [-2413730], None), ('normal control', [-1030669], None)]]
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 field00:00:59;2900:00:59;29Passed
regression variant: minute field23:30:22;1223:37:22;12Failed
partial repair probe: minute field23:00:59;2923:59:59;29Failed
partial repair variant: minute field10:50:05;2310:58:05;23Failed
boundary control00:10:00;0000:10:00;00Passed
boundary controlNoneNonePassed
normal control01:00:00;0001:00:00;00Passed
normal controlNoneNonePassed
normal controlNoneNonePassed

SHA-256 / 8158bfc93709ccc469d10d768ca55aeacc464388236c357590f81d1389ebcf78

3 / The verified repair

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

N = 1
observations = []
def solve(frames):
    if frames<0:
        return None
    frames%=2589408
    d,mrem=divmod(frames,17982)
    add=18*d
    if mrem>=2:
        add+=2*((mrem-2)//1798)
    n=frames+add
    ff=n%30
    ss=n//30%60
    mm=n//1800%60
    hh=n//108000
    return '%02d:%02d:%02d;%02d'%(hh,mm,ss,ff)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: minute field', [1799], '00:00:59;29'), ('regression variant: minute field', [5138128], '23:37:22;12'), ('partial repair probe: minute field', [2589407], '23:59:59;29'), ('partial repair variant: minute field', [1183387], '10:58:05;23'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [107892], '01:00:00;00'), ('normal control', [-2], None), ('normal control', [-1641352], None)], [('regression: minute field', [107891], '00:59:59;29'), ('regression variant: minute field', [2576030], '23:52:33;18'), ('partial repair probe: minute field', [52594], '00:29:14;28'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [107892], '01:00:00;00'), ('boundary control', [17982], '00:10:00;00'), ('normal control', [35964], '00:20:00;00'), ('normal control', [701299], '06:30:00;01'), ('normal control', [-464827], None)], [('regression: minute field', [2589407], '23:59:59;29'), ('regression variant: minute field', [666705], '06:10:45;21'), ('partial repair probe: minute field', [3372691], '07:15:35;17'), ('partial repair variant: minute field', [1346634], '12:28:52;22'), ('boundary control', [0], '00:00:00;00'), ('boundary control', [107892], '01:00:00;00'), ('normal control', [143856], '01:20:00;00'), ('normal control', [2], '00:00:00;02'), ('normal control', [107893], '01:00:00;01')], [('regression: minute field', [3372691], '07:15:35;17'), ('regression variant: minute field', [2535623], '23:30:05;11'), ('partial repair probe: minute field', [683315], '06:19:59;29'), ('partial repair variant: minute field', [757044], '07:01:00;02'), ('boundary control', [-1], None), ('boundary control', [0], '00:00:00;00'), ('normal control', [485515], '04:30:00;01'), ('normal control', [179822], '01:40:00;02'), ('normal control', [629371], '05:50:00;01')], [('regression: minute field', [683315], '06:19:59;29'), ('regression variant: minute field', [1346634], '12:28:52;22'), ('partial repair probe: minute field', [5138128], '23:37:22;12'), ('partial repair variant: minute field', [3599], '00:02:00;03'), ('boundary control', [17982], '00:10:00;00'), ('boundary control', [-1], None), ('normal control', [575425], '05:20:00;01'), ('normal control', [-2413730], None), ('normal control', [-1030669], None)]]
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 field00:00:59;2900:00:59;29Passed
regression variant: minute field23:37:22;1223:37:22;12Passed
partial repair probe: minute field23:59:59;2923:59:59;29Passed
partial repair variant: minute field10:58:05;2310:58:05;23Passed
boundary control00:10:00;0000:10:00;00Passed
boundary controlNoneNonePassed
normal control01:00:00;0001:00:00;00Passed
normal controlNoneNonePassed
normal controlNoneNonePassed

SHA-256 / 47c3dbf8d3fd9c305debd0a76668331447818f36dae4e5e99ceb2e414f935135

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:35.314890+00:00.

Case digest / 7f93cad94423e50e1e43848564df586ab8a0de7f33dd3277effb06da32e6b6d8