FAILURE MAP
← Case archive

FA-59506 / Subscription proration billing / Open access

Prorated amounts in currency minor units: zero-exponent display · case 01

Chilean peso invoices print a decimal point and a stray digit.

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

ROOT CAUSE

Integer display is keyed to one currency instead of to the zero exponent.

VERIFIED REPAIR

Restore the contract rule at the zero-exponent display step: use `if exp == 0:`.

Unsuccessful approach: The attempt tests the exponent but still special-cases the peso out of it.

Case contract

Input {price (signed minor units), currency, num, den}. Exponents: USD 2, EUR 2, JPY 0, KWD 3, CLP 0. Amount = price*num/den rounded half away from zero. Display: zero-exponent currencies show an integer; others show sign, major units, a dot and exactly exponent digits, then a space and the code. Return {minor, display}.

Why this case matters

Prorated amounts must round and render in each currency's own minor-unit precision, including credits.

1 / The failure

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

N = 1
observations = []
def solve(x):
    exp = {'USD': 2, 'EUR': 2, 'JPY': 0, 'KWD': 3, 'CLP': 0}[x['currency']]
    n = x['price'] * x['num']
    v = (abs(n) * 2 + x['den']) // (2 * x['den'])
    v = v if n >= 0 else -v
    if x['currency'] == 'JPY':
        disp = str(v)
    else:
        sign = '-' if v < 0 else ''
        q, r = divmod(abs(v), 10 ** exp)
        disp = '%s%d.%0*d' % (sign, q, exp, r)
    return {'minor': v, 'display': disp + ' ' + x['currency']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression', {'price': 77, 'currency': 'CLP', 'num': 12, 'den': 365}, {'minor': 3, 'display': '3 CLP'}), ('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('partial-repair probe', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -6310, 'currency': 'EUR', 'num': 23, 'den': 31}, {'minor': -4682, 'display': '-46.82 EUR'}), ('normal control', {'price': -35, 'currency': 'KWD', 'num': 30, 'den': 30}, {'minor': -35, 'display': '-0.035 KWD'}), ('normal control', {'price': 63, 'currency': 'JPY', 'num': 925, 'den': 1000}, {'minor': 58, 'display': '58 JPY'}), ('normal control', {'price': 59, 'currency': 'JPY', 'num': 2, 'den': 4}, {'minor': 30, 'display': '30 JPY'})], [('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 26, 'currency': 'KWD', 'num': 3, 'den': 31}, {'minor': 3, 'display': '0.003 KWD'}), ('normal control', {'price': -18, 'currency': 'JPY', 'num': 81, 'den': 365}, {'minor': -4, 'display': '-4 JPY'}), ('normal control', {'price': -48, 'currency': 'JPY', 'num': 0, 'den': 4}, {'minor': 0, 'display': '0 JPY'}), ('normal control', {'price': -51, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -26, 'display': '-0.26 EUR'})], [('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -88, 'currency': 'KWD', 'num': 15, 'den': 31}, {'minor': -43, 'display': '-0.043 KWD'}), ('normal control', {'price': -79, 'currency': 'JPY', 'num': 200, 'den': 365}, {'minor': -43, 'display': '-43 JPY'}), ('normal control', {'price': -20, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -10, 'display': '-0.10 USD'}), ('normal control', {'price': -93, 'currency': 'EUR', 'num': 0, 'den': 2}, {'minor': 0, 'display': '0.00 EUR'})], [('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': 388537, 'currency': 'CLP', 'num': 201, 'den': 365}, {'minor': 213961, 'display': '213961 CLP'}), ('partial-repair probe', {'price': -1, 'currency': 'CLP', 'num': 27, 'den': 31}, {'minor': -1, 'display': '-1 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 464209, 'currency': 'EUR', 'num': 10, 'den': 30}, {'minor': 154736, 'display': '1547.36 EUR'}), ('normal control', {'price': 61, 'currency': 'JPY', 'num': 50, 'den': 365}, {'minor': 8, 'display': '8 JPY'}), ('normal control', {'price': -29, 'currency': 'USD', 'num': 316, 'den': 1000}, {'minor': -9, 'display': '-0.09 USD'}), ('normal control', {'price': 675691, 'currency': 'KWD', 'num': 214, 'den': 365}, {'minor': 396159, 'display': '396.159 KWD'})], [('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('regression', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('partial-repair probe', {'price': 791156, 'currency': 'CLP', 'num': 1, 'den': 2}, {'minor': 395578, 'display': '395578 CLP'}), ('partial-repair probe', {'price': 830593, 'currency': 'CLP', 'num': 569, 'den': 1000}, {'minor': 472607, 'display': '472607 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -357324, 'currency': 'USD', 'num': 19, 'den': 30}, {'minor': -226305, 'display': '-2263.05 USD'}), ('normal control', {'price': -28, 'currency': 'EUR', 'num': 30, 'den': 30}, {'minor': -28, 'display': '-0.28 EUR'}), ('normal control', {'price': 95, 'currency': 'USD', 'num': 25, 'den': 30}, {'minor': 79, 'display': '0.79 USD'}), ('normal control', {'price': 553663, 'currency': 'USD', 'num': 138, 'den': 365}, {'minor': 209330, 'display': '2093.30 USD'})]]
for i, (label, args, expected) in enumerate(fixtures[N-1]):
    check("%s %d" % (label, i), 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 0{'display': '3.0 CLP', 'minor': 3}{'display': '3 CLP', 'minor': 3}Failed
regression 1{'display': '441137.0 CLP', 'minor': 441137}{'display': '441137 CLP', 'minor': 441137}Failed
partial-repair probe 2{'display': '-74.0 CLP', 'minor': -74}{'display': '-74 CLP', 'minor': -74}Failed
partial-repair probe 3{'display': '528226.0 CLP', 'minor': 528226}{'display': '528226 CLP', 'minor': 528226}Failed
boundary control 4{'display': '-0.02 USD', 'minor': -2}{'display': '-0.02 USD', 'minor': -2}Passed
boundary control 5{'display': '3 JPY', 'minor': 3}{'display': '3 JPY', 'minor': 3}Passed
normal control 6{'display': '-46.82 EUR', 'minor': -4682}{'display': '-46.82 EUR', 'minor': -4682}Passed
normal control 7{'display': '-0.035 KWD', 'minor': -35}{'display': '-0.035 KWD', 'minor': -35}Passed
normal control 8{'display': '58 JPY', 'minor': 58}{'display': '58 JPY', 'minor': 58}Passed
normal control 9{'display': '30 JPY', 'minor': 30}{'display': '30 JPY', 'minor': 30}Passed

SHA-256 / 0aeb9b749e592ceac45fcd8bf26cb3f309d44b04b70fcb2637f036b99a435253

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    exp = {'USD': 2, 'EUR': 2, 'JPY': 0, 'KWD': 3, 'CLP': 0}[x['currency']]
    n = x['price'] * x['num']
    v = (abs(n) * 2 + x['den']) // (2 * x['den'])
    v = v if n >= 0 else -v
    if exp == 0 and x['currency'] != 'CLP':
        disp = str(v)
    else:
        sign = '-' if v < 0 else ''
        q, r = divmod(abs(v), 10 ** exp)
        disp = '%s%d.%0*d' % (sign, q, exp, r)
    return {'minor': v, 'display': disp + ' ' + x['currency']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression', {'price': 77, 'currency': 'CLP', 'num': 12, 'den': 365}, {'minor': 3, 'display': '3 CLP'}), ('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('partial-repair probe', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -6310, 'currency': 'EUR', 'num': 23, 'den': 31}, {'minor': -4682, 'display': '-46.82 EUR'}), ('normal control', {'price': -35, 'currency': 'KWD', 'num': 30, 'den': 30}, {'minor': -35, 'display': '-0.035 KWD'}), ('normal control', {'price': 63, 'currency': 'JPY', 'num': 925, 'den': 1000}, {'minor': 58, 'display': '58 JPY'}), ('normal control', {'price': 59, 'currency': 'JPY', 'num': 2, 'den': 4}, {'minor': 30, 'display': '30 JPY'})], [('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 26, 'currency': 'KWD', 'num': 3, 'den': 31}, {'minor': 3, 'display': '0.003 KWD'}), ('normal control', {'price': -18, 'currency': 'JPY', 'num': 81, 'den': 365}, {'minor': -4, 'display': '-4 JPY'}), ('normal control', {'price': -48, 'currency': 'JPY', 'num': 0, 'den': 4}, {'minor': 0, 'display': '0 JPY'}), ('normal control', {'price': -51, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -26, 'display': '-0.26 EUR'})], [('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -88, 'currency': 'KWD', 'num': 15, 'den': 31}, {'minor': -43, 'display': '-0.043 KWD'}), ('normal control', {'price': -79, 'currency': 'JPY', 'num': 200, 'den': 365}, {'minor': -43, 'display': '-43 JPY'}), ('normal control', {'price': -20, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -10, 'display': '-0.10 USD'}), ('normal control', {'price': -93, 'currency': 'EUR', 'num': 0, 'den': 2}, {'minor': 0, 'display': '0.00 EUR'})], [('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': 388537, 'currency': 'CLP', 'num': 201, 'den': 365}, {'minor': 213961, 'display': '213961 CLP'}), ('partial-repair probe', {'price': -1, 'currency': 'CLP', 'num': 27, 'den': 31}, {'minor': -1, 'display': '-1 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 464209, 'currency': 'EUR', 'num': 10, 'den': 30}, {'minor': 154736, 'display': '1547.36 EUR'}), ('normal control', {'price': 61, 'currency': 'JPY', 'num': 50, 'den': 365}, {'minor': 8, 'display': '8 JPY'}), ('normal control', {'price': -29, 'currency': 'USD', 'num': 316, 'den': 1000}, {'minor': -9, 'display': '-0.09 USD'}), ('normal control', {'price': 675691, 'currency': 'KWD', 'num': 214, 'den': 365}, {'minor': 396159, 'display': '396.159 KWD'})], [('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('regression', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('partial-repair probe', {'price': 791156, 'currency': 'CLP', 'num': 1, 'den': 2}, {'minor': 395578, 'display': '395578 CLP'}), ('partial-repair probe', {'price': 830593, 'currency': 'CLP', 'num': 569, 'den': 1000}, {'minor': 472607, 'display': '472607 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -357324, 'currency': 'USD', 'num': 19, 'den': 30}, {'minor': -226305, 'display': '-2263.05 USD'}), ('normal control', {'price': -28, 'currency': 'EUR', 'num': 30, 'den': 30}, {'minor': -28, 'display': '-0.28 EUR'}), ('normal control', {'price': 95, 'currency': 'USD', 'num': 25, 'den': 30}, {'minor': 79, 'display': '0.79 USD'}), ('normal control', {'price': 553663, 'currency': 'USD', 'num': 138, 'den': 365}, {'minor': 209330, 'display': '2093.30 USD'})]]
for i, (label, args, expected) in enumerate(fixtures[N-1]):
    check("%s %d" % (label, i), 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 0{'display': '3.0 CLP', 'minor': 3}{'display': '3 CLP', 'minor': 3}Failed
regression 1{'display': '441137.0 CLP', 'minor': 441137}{'display': '441137 CLP', 'minor': 441137}Failed
partial-repair probe 2{'display': '-74.0 CLP', 'minor': -74}{'display': '-74 CLP', 'minor': -74}Failed
partial-repair probe 3{'display': '528226.0 CLP', 'minor': 528226}{'display': '528226 CLP', 'minor': 528226}Failed
boundary control 4{'display': '-0.02 USD', 'minor': -2}{'display': '-0.02 USD', 'minor': -2}Passed
boundary control 5{'display': '3 JPY', 'minor': 3}{'display': '3 JPY', 'minor': 3}Passed
normal control 6{'display': '-46.82 EUR', 'minor': -4682}{'display': '-46.82 EUR', 'minor': -4682}Passed
normal control 7{'display': '-0.035 KWD', 'minor': -35}{'display': '-0.035 KWD', 'minor': -35}Passed
normal control 8{'display': '58 JPY', 'minor': 58}{'display': '58 JPY', 'minor': 58}Passed
normal control 9{'display': '30 JPY', 'minor': 30}{'display': '30 JPY', 'minor': 30}Passed

SHA-256 / c930e1f750a91c2f6065cec8530aa13e67960c22ae92dafbad9ada718b2ea01b

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    exp = {'USD': 2, 'EUR': 2, 'JPY': 0, 'KWD': 3, 'CLP': 0}[x['currency']]
    n = x['price'] * x['num']
    v = (abs(n) * 2 + x['den']) // (2 * x['den'])
    v = v if n >= 0 else -v
    if exp == 0:
        disp = str(v)
    else:
        sign = '-' if v < 0 else ''
        q, r = divmod(abs(v), 10 ** exp)
        disp = '%s%d.%0*d' % (sign, q, exp, r)
    return {'minor': v, 'display': disp + ' ' + x['currency']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression', {'price': 77, 'currency': 'CLP', 'num': 12, 'den': 365}, {'minor': 3, 'display': '3 CLP'}), ('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('partial-repair probe', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -6310, 'currency': 'EUR', 'num': 23, 'den': 31}, {'minor': -4682, 'display': '-46.82 EUR'}), ('normal control', {'price': -35, 'currency': 'KWD', 'num': 30, 'den': 30}, {'minor': -35, 'display': '-0.035 KWD'}), ('normal control', {'price': 63, 'currency': 'JPY', 'num': 925, 'den': 1000}, {'minor': 58, 'display': '58 JPY'}), ('normal control', {'price': 59, 'currency': 'JPY', 'num': 2, 'den': 4}, {'minor': 30, 'display': '30 JPY'})], [('regression', {'price': 441137, 'currency': 'CLP', 'num': 2, 'den': 2}, {'minor': 441137, 'display': '441137 CLP'}), ('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('partial-repair probe', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 26, 'currency': 'KWD', 'num': 3, 'den': 31}, {'minor': 3, 'display': '0.003 KWD'}), ('normal control', {'price': -18, 'currency': 'JPY', 'num': 81, 'den': 365}, {'minor': -4, 'display': '-4 JPY'}), ('normal control', {'price': -48, 'currency': 'JPY', 'num': 0, 'den': 4}, {'minor': 0, 'display': '0 JPY'}), ('normal control', {'price': -51, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -26, 'display': '-0.26 EUR'})], [('regression', {'price': -98, 'currency': 'CLP', 'num': 3, 'den': 4}, {'minor': -74, 'display': '-74 CLP'}), ('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('partial-repair probe', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -88, 'currency': 'KWD', 'num': 15, 'den': 31}, {'minor': -43, 'display': '-0.043 KWD'}), ('normal control', {'price': -79, 'currency': 'JPY', 'num': 200, 'den': 365}, {'minor': -43, 'display': '-43 JPY'}), ('normal control', {'price': -20, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -10, 'display': '-0.10 USD'}), ('normal control', {'price': -93, 'currency': 'EUR', 'num': 0, 'den': 2}, {'minor': 0, 'display': '0.00 EUR'})], [('regression', {'price': 771210, 'currency': 'CLP', 'num': 250, 'den': 365}, {'minor': 528226, 'display': '528226 CLP'}), ('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('partial-repair probe', {'price': 388537, 'currency': 'CLP', 'num': 201, 'den': 365}, {'minor': 213961, 'display': '213961 CLP'}), ('partial-repair probe', {'price': -1, 'currency': 'CLP', 'num': 27, 'den': 31}, {'minor': -1, 'display': '-1 CLP'}), ('boundary control', {'price': -7, 'currency': 'KWD', 'num': 1, 'den': 2}, {'minor': -4, 'display': '-0.004 KWD'}), ('boundary control', {'price': -105, 'currency': 'EUR', 'num': 1, 'den': 2}, {'minor': -53, 'display': '-0.53 EUR'}), ('normal control', {'price': 464209, 'currency': 'EUR', 'num': 10, 'den': 30}, {'minor': 154736, 'display': '1547.36 EUR'}), ('normal control', {'price': 61, 'currency': 'JPY', 'num': 50, 'den': 365}, {'minor': 8, 'display': '8 JPY'}), ('normal control', {'price': -29, 'currency': 'USD', 'num': 316, 'den': 1000}, {'minor': -9, 'display': '-0.09 USD'}), ('normal control', {'price': 675691, 'currency': 'KWD', 'num': 214, 'den': 365}, {'minor': 396159, 'display': '396.159 KWD'})], [('regression', {'price': 705318, 'currency': 'CLP', 'num': 206, 'den': 365}, {'minor': 398070, 'display': '398070 CLP'}), ('regression', {'price': -45, 'currency': 'CLP', 'num': 496, 'den': 1000}, {'minor': -22, 'display': '-22 CLP'}), ('partial-repair probe', {'price': 791156, 'currency': 'CLP', 'num': 1, 'den': 2}, {'minor': 395578, 'display': '395578 CLP'}), ('partial-repair probe', {'price': 830593, 'currency': 'CLP', 'num': 569, 'den': 1000}, {'minor': 472607, 'display': '472607 CLP'}), ('boundary control', {'price': -3, 'currency': 'USD', 'num': 1, 'den': 2}, {'minor': -2, 'display': '-0.02 USD'}), ('boundary control', {'price': 5, 'currency': 'JPY', 'num': 1, 'den': 2}, {'minor': 3, 'display': '3 JPY'}), ('normal control', {'price': -357324, 'currency': 'USD', 'num': 19, 'den': 30}, {'minor': -226305, 'display': '-2263.05 USD'}), ('normal control', {'price': -28, 'currency': 'EUR', 'num': 30, 'den': 30}, {'minor': -28, 'display': '-0.28 EUR'}), ('normal control', {'price': 95, 'currency': 'USD', 'num': 25, 'den': 30}, {'minor': 79, 'display': '0.79 USD'}), ('normal control', {'price': 553663, 'currency': 'USD', 'num': 138, 'den': 365}, {'minor': 209330, 'display': '2093.30 USD'})]]
for i, (label, args, expected) in enumerate(fixtures[N-1]):
    check("%s %d" % (label, i), 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 0{'display': '3 CLP', 'minor': 3}{'display': '3 CLP', 'minor': 3}Passed
regression 1{'display': '441137 CLP', 'minor': 441137}{'display': '441137 CLP', 'minor': 441137}Passed
partial-repair probe 2{'display': '-74 CLP', 'minor': -74}{'display': '-74 CLP', 'minor': -74}Passed
partial-repair probe 3{'display': '528226 CLP', 'minor': 528226}{'display': '528226 CLP', 'minor': 528226}Passed
boundary control 4{'display': '-0.02 USD', 'minor': -2}{'display': '-0.02 USD', 'minor': -2}Passed
boundary control 5{'display': '3 JPY', 'minor': 3}{'display': '3 JPY', 'minor': 3}Passed
normal control 6{'display': '-46.82 EUR', 'minor': -4682}{'display': '-46.82 EUR', 'minor': -4682}Passed
normal control 7{'display': '-0.035 KWD', 'minor': -35}{'display': '-0.035 KWD', 'minor': -35}Passed
normal control 8{'display': '58 JPY', 'minor': 58}{'display': '58 JPY', 'minor': 58}Passed
normal control 9{'display': '30 JPY', 'minor': 30}{'display': '30 JPY', 'minor': 30}Passed

SHA-256 / 423cb21813c06fd283b722dabec9873b2fff58e2f8d7ddc06d4d345041a77096

Verification & scope

A deterministic teaching model of a stipulated billing rule. It makes no claim to reproduce any billing provider's exact behaviour and is not billing software. 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:46:36.956789+00:00.

Case digest / d614860a3ae58bed07b74ed5347f278d8891f52a0cb1dfd71cf4facf24cbf514