FAILURE MAP
← Case archive

FA-62706 / Tax bracket computation / Open access

The dividend tax credit is computed on the cash dividend instead of the grossed-up amount · case 01

Dividend recipients receive a smaller credit than the integration rules provide.

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

ROOT CAUSE

The credit rates are applied to the actual dividends.

VERIFIED REPAIR

Apply the credit rates to the grossed-up amounts.

Unsuccessful approach: Grossing up only the eligible credit base leaves non-eligible dividends under-credited.

Case contract

solve(other, elig, nonelig): stipulated dividend integration, whole dollars. Eligible dividends are grossed up by 38% and non-eligible by 15%; taxable income is other income plus both grossed-up amounts, taxed with slices 15% to 55867, 20.5% to 111733, 26% to 173205, 29% to 246752, 33% above. The nonrefundable dividend credit is 15.0198% of the grossed-up eligible amount plus 9.0301% of the grossed-up non-eligible amount. Tax = max(0, slice tax - credit), returned in integer cents half-up.

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(other, elig, nonelig):
    def prog(x, br):
        tax, lower = Fraction(0), 0
        for upper, rate in br:
            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 tax
    def cents(v):
        v = v * 100
        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))
    
    br = [[55867, '15'], [111733, '20.5'], [173205, '26'], [246752, '29'], [None, '33']]
    g_e = elig * Fraction(138, 100)
    g_n = nonelig * Fraction(115, 100)
    taxable = other + g_e + g_n
    credit = elig * Fraction(150198, 1000000) + nonelig * Fraction(90301, 1000000)
    return cents(max(0, prog(taxable, br) - credit))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression credit-base 1', (40000, 0, 20000), 776539), ('regression credit-base 2', (100000, 10000, 0), 1829727),
  ('partial repair guard 2', (80000, 15000, 15000), 1678221), ('control: wages only', (50000, 0, 0), 750000),
  ('control: eligible dividends only', (0, 10000, 0), 0), ('control: high income', (250000, 50000, 10000), 7337865)],
 [('regression credit-base 1', (0, 10000, 0), 0), ('regression credit-base 2', (80000, 15000, 15000), 1678221),
  ('partial repair guard 1', (250000, 50000, 10000), 7337865), ('partial repair guard 2', (20000, 78584, 5000), 886535),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539), ('control: wages only', (50000, 0, 0), 750000),
  ('control: mixed', (100000, 10000, 0), 1829727)],
 [('regression credit-base 1', (250000, 50000, 10000), 7337865), ('regression credit-base 2', (50000, 3936, 0), 749892),
  ('partial repair guard 1', (0, 0, 16293), 111858), ('partial repair guard 2', (100000, 0, 5000), 1808683),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)],
 [('regression credit-base 1', (0, 50000, 0), 70865), ('regression credit-base 2', (100000, 997, 0), 1750271),
  ('partial repair guard 1', (0, 10000, 5000), 34054), ('partial repair guard 2', (0, 50000, 49145), 794917),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539),
  ('control: both kinds', (80000, 15000, 15000), 1678221), ('control: high income', (250000, 50000, 10000), 7337865),
  ('control: wages only', (50000, 0, 0), 750000)],
 [('regression credit-base 1', (20000, 78584, 5000), 886535), ('regression credit-base 2', (0, 0, 16293), 111858),
  ('partial repair guard 1', (20000, 1000, 5000), 334300), ('partial repair guard 2', (10606, 50000, 20000), 552096),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)]]
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 credit-base 1803630776539Failed
regression credit-base 218868021829727Failed
partial repair guard 217841521678221Failed
control: wages only750000750000Passed
control: eligible dividends only568020Failed
control: high income76367867337865Failed

SHA-256 / 9f5d6a8e3576dd45a96a5748d75e1df7e15466672bdc68eeb377b3e4e3e4fa61

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(other, elig, nonelig):
    def prog(x, br):
        tax, lower = Fraction(0), 0
        for upper, rate in br:
            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 tax
    def cents(v):
        v = v * 100
        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))
    
    br = [[55867, '15'], [111733, '20.5'], [173205, '26'], [246752, '29'], [None, '33']]
    g_e = elig * Fraction(138, 100)
    g_n = nonelig * Fraction(115, 100)
    taxable = other + g_e + g_n
    credit = g_e * Fraction(150198, 1000000) + nonelig * Fraction(90301, 1000000)
    return cents(max(0, prog(taxable, br) - credit))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression credit-base 1', (40000, 0, 20000), 776539), ('regression credit-base 2', (100000, 10000, 0), 1829727),
  ('partial repair guard 2', (80000, 15000, 15000), 1678221), ('control: wages only', (50000, 0, 0), 750000),
  ('control: eligible dividends only', (0, 10000, 0), 0), ('control: high income', (250000, 50000, 10000), 7337865)],
 [('regression credit-base 1', (0, 10000, 0), 0), ('regression credit-base 2', (80000, 15000, 15000), 1678221),
  ('partial repair guard 1', (250000, 50000, 10000), 7337865), ('partial repair guard 2', (20000, 78584, 5000), 886535),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539), ('control: wages only', (50000, 0, 0), 750000),
  ('control: mixed', (100000, 10000, 0), 1829727)],
 [('regression credit-base 1', (250000, 50000, 10000), 7337865), ('regression credit-base 2', (50000, 3936, 0), 749892),
  ('partial repair guard 1', (0, 0, 16293), 111858), ('partial repair guard 2', (100000, 0, 5000), 1808683),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)],
 [('regression credit-base 1', (0, 50000, 0), 70865), ('regression credit-base 2', (100000, 997, 0), 1750271),
  ('partial repair guard 1', (0, 10000, 5000), 34054), ('partial repair guard 2', (0, 50000, 49145), 794917),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539),
  ('control: both kinds', (80000, 15000, 15000), 1678221), ('control: high income', (250000, 50000, 10000), 7337865),
  ('control: wages only', (50000, 0, 0), 750000)],
 [('regression credit-base 1', (20000, 78584, 5000), 886535), ('regression credit-base 2', (0, 0, 16293), 111858),
  ('partial repair guard 1', (20000, 1000, 5000), 334300), ('partial repair guard 2', (10606, 50000, 20000), 552096),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)]]
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 credit-base 1803630776539Failed
regression credit-base 218297271829727Passed
partial repair guard 216985391678221Failed
control: wages only750000750000Passed
control: eligible dividends only00Passed
control: high income73514107337865Failed

SHA-256 / 8fc16d9e62fb7e63c185c7c3b901d5a3f5b94d1c93a63a701d18e1946141fa45

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(other, elig, nonelig):
    def prog(x, br):
        tax, lower = Fraction(0), 0
        for upper, rate in br:
            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 tax
    def cents(v):
        v = v * 100
        return int(v + Fraction(1, 2)) if v >= 0 else -int(-v + Fraction(1, 2))
    
    br = [[55867, '15'], [111733, '20.5'], [173205, '26'], [246752, '29'], [None, '33']]
    g_e = elig * Fraction(138, 100)
    g_n = nonelig * Fraction(115, 100)
    taxable = other + g_e + g_n
    credit = g_e * Fraction(150198, 1000000) + g_n * Fraction(90301, 1000000)
    return cents(max(0, prog(taxable, br) - credit))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression credit-base 1', (40000, 0, 20000), 776539), ('regression credit-base 2', (100000, 10000, 0), 1829727),
  ('partial repair guard 2', (80000, 15000, 15000), 1678221), ('control: wages only', (50000, 0, 0), 750000),
  ('control: eligible dividends only', (0, 10000, 0), 0), ('control: high income', (250000, 50000, 10000), 7337865)],
 [('regression credit-base 1', (0, 10000, 0), 0), ('regression credit-base 2', (80000, 15000, 15000), 1678221),
  ('partial repair guard 1', (250000, 50000, 10000), 7337865), ('partial repair guard 2', (20000, 78584, 5000), 886535),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539), ('control: wages only', (50000, 0, 0), 750000),
  ('control: mixed', (100000, 10000, 0), 1829727)],
 [('regression credit-base 1', (250000, 50000, 10000), 7337865), ('regression credit-base 2', (50000, 3936, 0), 749892),
  ('partial repair guard 1', (0, 0, 16293), 111858), ('partial repair guard 2', (100000, 0, 5000), 1808683),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)],
 [('regression credit-base 1', (0, 50000, 0), 70865), ('regression credit-base 2', (100000, 997, 0), 1750271),
  ('partial repair guard 1', (0, 10000, 5000), 34054), ('partial repair guard 2', (0, 50000, 49145), 794917),
  ('control: non-eligible dividends', (40000, 0, 20000), 776539),
  ('control: both kinds', (80000, 15000, 15000), 1678221), ('control: high income', (250000, 50000, 10000), 7337865),
  ('control: wages only', (50000, 0, 0), 750000)],
 [('regression credit-base 1', (20000, 78584, 5000), 886535), ('regression credit-base 2', (0, 0, 16293), 111858),
  ('partial repair guard 1', (20000, 1000, 5000), 334300), ('partial repair guard 2', (10606, 50000, 20000), 552096),
  ('control: wages only', (50000, 0, 0), 750000), ('control: eligible dividends only', (0, 10000, 0), 0),
  ('control: mixed', (100000, 10000, 0), 1829727), ('control: non-eligible dividends', (40000, 0, 20000), 776539)]]
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 credit-base 1776539776539Passed
regression credit-base 218297271829727Passed
partial repair guard 216782211678221Passed
control: wages only750000750000Passed
control: eligible dividends only00Passed
control: high income73378657337865Passed

SHA-256 / eb741410e10429549213af96535fb1d9123409f450939b648e5bf99967011133

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

Case digest / bfc481a5b76ad0a54731cb2bd39b560a2cb45fc1455762030487bb6c84450403