FAILURE MAP
← Case archive

FA-63181 / Insurance premium rating / Open access

Calendar period earned and unearned premium: Earned premium is rounded per policy · case 01

Portfolio earned premium differs by cents from the exact total.

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

ROOT CAUSE

Each policy is rounded before aggregation.

VERIFIED REPAIR

Accumulate exact amounts and round the total once.

Unsuccessful approach: Floor division per policy truncates instead.

Case contract

Input period [start, end) in days and policies [[written day, term days (>0 else 'invalid term'), premium]]. Earned = premium*overlap/term where overlap = max(0, min(end, w+term) - max(start, w)). Unearned at end counts policies written before end and still in force after it. Sum exactly; round each total half-up once.

Why this case matters

Earned premium is the denominator of every loss ratio, so exposure-overlap slips distort rate indications.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    s,e=x['period']
    earned=Fraction(0); unearned=Fraction(0)
    for w,t,p in x['policies']:
        if t<=0: return 'invalid term'
        ov=max(0,min(e,w+t)-max(s,w))
        earned+=math.floor(Fraction(p*ov,t)+Fraction(1,2))
        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
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
written before period[83147, 0][83147, 0]Passed
written inside period[63608, 54245][63608, 54245]Passed
expired before period[92990, 0][92990, 0]Passed
written on period end[254, 92587][254, 92587]Passed
portfolio[239117, 24152][239117, 24152]Passed
invalid terminvalid terminvalid termPassed
short-term in period[238035, 10099][238035, 10099]Passed
odd premiums[146759, 3622][146759, 3622]Passed
multi-year policy written before period[194447, 370248][194447, 370248]Passed
straddling policies with fractional cents[36, 0][37, 0]Failed
odd short-term book[234969, 19826][234969, 19826]Passed

SHA-256 / 6b7a2e69f2e0f60e36d16662b7b871c3529f40ad91d3fe06215b98518a674b6b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    s,e=x['period']
    earned=Fraction(0); unearned=Fraction(0)
    for w,t,p in x['policies']:
        if t<=0: return 'invalid term'
        ov=max(0,min(e,w+t)-max(s,w))
        earned+=p*ov//t
        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
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
written before period[83147, 0][83147, 0]Passed
written inside period[63608, 54245][63608, 54245]Passed
expired before period[92990, 0][92990, 0]Passed
written on period end[254, 92587][254, 92587]Passed
portfolio[239115, 24152][239117, 24152]Failed
invalid terminvalid terminvalid termPassed
short-term in period[238034, 10099][238035, 10099]Failed
odd premiums[146758, 3622][146759, 3622]Failed
multi-year policy written before period[194446, 370248][194447, 370248]Failed
straddling policies with fractional cents[36, 0][37, 0]Failed
odd short-term book[234968, 19826][234969, 19826]Failed

SHA-256 / 042edb1050576830af089eb3c60cd90edfe3d330d5ad1a6ba1a7465a005092e5

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    s,e=x['period']
    earned=Fraction(0); unearned=Fraction(0)
    for w,t,p in x['policies']:
        if t<=0: return 'invalid term'
        ov=max(0,min(e,w+t)-max(s,w))
        earned+=Fraction(p*ov,t)
        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
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
written before period[83147, 0][83147, 0]Passed
written inside period[63608, 54245][63608, 54245]Passed
expired before period[92990, 0][92990, 0]Passed
written on period end[254, 92587][254, 92587]Passed
portfolio[239117, 24152][239117, 24152]Passed
invalid terminvalid terminvalid termPassed
short-term in period[238035, 10099][238035, 10099]Passed
odd premiums[146759, 3622][146759, 3622]Passed
multi-year policy written before period[194447, 370248][194447, 370248]Passed
straddling policies with fractional cents[37, 0][37, 0]Passed
odd short-term book[234969, 19826][234969, 19826]Passed

SHA-256 / 3adca050d1d829be9c46e2b2e3fc8e29c509bd01814e008d3c327f596701ae48

Verification & scope

A deterministic bounded teaching model of a stipulated toy rating contract. Amounts are integer cents and factors exact rationals; it makes no claim of conformance with any filed rating plan, bureau manual or jurisdiction. 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:11.839042+00:00.

Case digest / 6b200024448b78f1a899961b0e7687a70f0690da664f93cac20b6dc93987514c