FAILURE MAP
← Case archive

FA-62351 / Tax bracket computation / Open access

Each bracket slice is rounded to cents before summing · case 01

Totals differ by a cent from the exact schedule when several slices carry half-cents.

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

ROOT CAUSE

Every slice's tax is rounded half-up to cents before being added.

VERIFIED REPAIR

Sum the exact slice amounts and round once.

Unsuccessful approach: Rounding each slice half-even instead of half-up is still per-slice rounding.

Case contract

solve(income, brackets): brackets is [[upper, rate_percent], ...] with strictly increasing positive uppers and a final open bracket [None, rate]; otherwise return 'ERR:brackets'. Each rate applies only to the slice of income in (previous upper, upper]. Negative income is taxed as zero. The tax is summed exactly and rounded half-up to cents once, returned as integer cents.

Why this case matters

Tax computations hinge on which slice, threshold, ordering and rounding rule applies at each step; a misplaced boundary silently misstates liabilities.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(income, brackets):
    if not brackets or brackets[-1][0] is not None: return 'ERR:brackets'
    uppers = [u for u, _ in brackets[:-1]]
    if any(b <= a for a, b in zip([0] + uppers, uppers)): return 'ERR:brackets'
    x = max(0, income)
    tax, lower = Fraction(0), 0
    for upper, rate in brackets:
        top = x if upper is None else min(x, upper)
        if top > lower:
            tax += Fraction(int((top - lower) * Fraction(rate) + Fraction(1, 2)), 100)
        if upper is None or x <= upper: break
        lower = upper
    return int(tax * 100 + Fraction(1, 2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (11001, [[11000, '12.5'], [None, '12.5']]), 137513),
  ('partial repair guard 2', (11003, [[11001, '12.5'], [None, '32.5']]), 137578),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 2', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets')],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (777, [[None, '12.5']]), 9713),
  ('partial repair guard 2', (10001, [[18000, '12.5'], [80000, '22'], [None, '30']]), 125013),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets'),
  ('control: closed top', (10, [[10000, '10'], [20000, '20']]), 'ERR:brackets'),
  ('control: high earner', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (10001, [[60000, '12.5'], [92000, '22'], [None, '45']]), 125013),
  ('partial repair guard 2', (1, [[68000, '12.5'], [81000, '10'], [167000, '33.3'], [None, '45']]), 13),
  ('control: single bracket', (777, [[None, '12.5']]), 9713),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (1, [[94000, '12.5'], [191000, '24'], [None, '45']]), 13),
  ('partial repair guard 2', (1, [[1000, '12.5'], [59000, '24'], [None, '40.5']]), 13),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140)]]
for label, args, expected in cases[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 slice-rounding 13938Failed
partial repair guard 1137513137513Passed
partial repair guard 2137578137578Passed
control: three brackets680000680000Passed
control: at first threshold100000100000Passed
control: zero00Passed
control: negative00Passed

SHA-256 / d95be53cd7f812dc9e65214572212884bd98ca74746ef7a288afdc490675e1c1

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(income, brackets):
    if not brackets or brackets[-1][0] is not None: return 'ERR:brackets'
    uppers = [u for u, _ in brackets[:-1]]
    if any(b <= a for a, b in zip([0] + uppers, uppers)): return 'ERR:brackets'
    x = max(0, income)
    tax, lower = Fraction(0), 0
    for upper, rate in brackets:
        top = x if upper is None else min(x, upper)
        if top > lower:
            tax += Fraction(round((top - lower) * Fraction(rate)), 100)
        if upper is None or x <= upper: break
        lower = upper
    return int(tax * 100 + Fraction(1, 2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (11001, [[11000, '12.5'], [None, '12.5']]), 137513),
  ('partial repair guard 2', (11003, [[11001, '12.5'], [None, '32.5']]), 137578),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 2', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets')],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (777, [[None, '12.5']]), 9713),
  ('partial repair guard 2', (10001, [[18000, '12.5'], [80000, '22'], [None, '30']]), 125013),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets'),
  ('control: closed top', (10, [[10000, '10'], [20000, '20']]), 'ERR:brackets'),
  ('control: high earner', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (10001, [[60000, '12.5'], [92000, '22'], [None, '45']]), 125013),
  ('partial repair guard 2', (1, [[68000, '12.5'], [81000, '10'], [167000, '33.3'], [None, '45']]), 13),
  ('control: single bracket', (777, [[None, '12.5']]), 9713),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (1, [[94000, '12.5'], [191000, '24'], [None, '45']]), 13),
  ('partial repair guard 2', (1, [[1000, '12.5'], [59000, '24'], [None, '40.5']]), 13),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140)]]
for label, args, expected in cases[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 slice-rounding 13638Failed
partial repair guard 1137512137513Failed
partial repair guard 2137577137578Failed
control: three brackets680000680000Passed
control: at first threshold100000100000Passed
control: zero00Passed
control: negative00Passed

SHA-256 / 42f51edfb726ec5d156ef7a6050f873c617eb9fc994182ba0f7dbd842491a3f3

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(income, brackets):
    if not brackets or brackets[-1][0] is not None: return 'ERR:brackets'
    uppers = [u for u, _ in brackets[:-1]]
    if any(b <= a for a, b in zip([0] + uppers, uppers)): return 'ERR:brackets'
    x = max(0, income)
    tax, lower = Fraction(0), 0
    for upper, rate in brackets:
        top = x if upper is None else min(x, upper)
        if top > lower:
            tax += (top - lower) * Fraction(rate) / 100
        if upper is None or x <= upper: break
        lower = upper
    return int(tax * 100 + Fraction(1, 2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (11001, [[11000, '12.5'], [None, '12.5']]), 137513),
  ('partial repair guard 2', (11003, [[11001, '12.5'], [None, '32.5']]), 137578),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 2', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets')],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (777, [[None, '12.5']]), 9713),
  ('partial repair guard 2', (10001, [[18000, '12.5'], [80000, '22'], [None, '30']]), 125013),
  ('control: non increasing', (10000, [[10000, '10'], [5000, '20'], [None, '30']]), 'ERR:brackets'),
  ('control: closed top', (10, [[10000, '10'], [20000, '20']]), 'ERR:brackets'),
  ('control: high earner', (250001, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   5917183),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (10001, [[60000, '12.5'], [92000, '22'], [None, '45']]), 125013),
  ('partial repair guard 2', (1, [[68000, '12.5'], [81000, '10'], [167000, '33.3'], [None, '45']]), 13),
  ('control: single bracket', (777, [[None, '12.5']]), 9713),
  ('control: three brackets', (50000, [[10000, '10'], [40000, '12'], [None, '22']]), 680000),
  ('control: at first threshold', (10000, [[10000, '10'], [40000, '12'], [None, '22']]), 100000),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0)],
 [('regression slice-rounding 1', (3, [[1, '12.5'], [2, '12.5'], [None, '12.5']]), 38),
  ('partial repair guard 1', (1, [[94000, '12.5'], [191000, '24'], [None, '45']]), 13),
  ('partial repair guard 2', (1, [[1000, '12.5'], [59000, '24'], [None, '40.5']]), 13),
  ('control: zero', (0, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: negative', (-5, [[10000, '10'], [40000, '12'], [None, '22']]), 0),
  ('control: one over threshold', (40001, [[10000, '10'], [40000, '12'], [None, '22']]), 460022),
  ('control: fractional rate', (12345, [[11000, '10'], [44725, '12'], [95375, '22'], [182100, '24'], [None, '32.5']]),
   126140)]]
for label, args, expected in cases[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 slice-rounding 13838Passed
partial repair guard 1137513137513Passed
partial repair guard 2137578137578Passed
control: three brackets680000680000Passed
control: at first threshold100000100000Passed
control: zero00Passed
control: negative00Passed

SHA-256 / 9abe4021ba504c677a60c731ad4f97d480be55f8a5d4a910819f902fb31ebc75

Verification & scope

A deterministic, bounded teaching model with a stipulated toy contract; it makes no claim of conformance to any real regulation, standard, or institution's rules. 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:47:03.810983+00:00.

Case digest / acf0feb0cea09adf5de04ce7c6e27122568963f57f6b360eb3be2759b4edc0d9