{"abstract":"Policies that expired before the period reduce earned premium.","category":"Insurance premium rating","checks":11,"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.","evaluation_group":"w2-insurance_premium_rating-earned-premium","failed_approach":"Clamping only the end point still subtracts the start.","family":"w2-insurance_premium_rating-earned-premium-overlap-clamp","id":"FA-63171","implementations":{"attempt":{"sha256":"66f0f43144571502ff65dafaab976856aca1a643a84b7f11b1eacc55cc8de234","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    s,e=x['period']\n    earned=Fraction(0); unearned=Fraction(0)\n    for w,t,p in x['policies']:\n        if t<=0: return 'invalid term'\n        ov=max(0,min(e,w+t))-max(s,w)\n        earned+=Fraction(p*ov,t)\n        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)\n    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"d9638513539d7bff15dc7f1ef38fb34f5c449974884ec2e8d569fd3ad6cb1fac","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    s,e=x['period']\n    earned=Fraction(0); unearned=Fraction(0)\n    for w,t,p in x['policies']:\n        if t<=0: return 'invalid term'\n        ov=min(e,w+t)-max(s,w)\n        earned+=Fraction(p*ov,t)\n        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)\n    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"3adca050d1d829be9c46e2b2e3fc8e29c509bd01814e008d3c327f596701ae48","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    s,e=x['period']\n    earned=Fraction(0); unearned=Fraction(0)\n    for w,t,p in x['policies']:\n        if t<=0: return 'invalid term'\n        ov=max(0,min(e,w+t)-max(s,w))\n        earned+=Fraction(p*ov,t)\n        if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)\n    return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-insurance_premium_rating-earned-premium-overlap-clamp","generated_at":"2026-09-29T14:47:11.708128+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Earned premium is the denominator of every loss ratio, so exposure-overlap slips distort rate indications.","repair":"Clamp the overlap length with max(0, ...).","root_cause":"The overlap is not clamped at zero.","sha256":"143f488266f163219aba3f961a83f6fb0679f9c72c29ceb3fb8795e1f14eaa09","title":"Calendar period earned and unearned premium: Expired policies contribute negative earnings · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.667,"exit_code":1,"observations":[{"actual":[83147,0],"check":"written before period","expected":[83147,0],"passed":true},{"actual":[63608,54245],"check":"written inside period","expected":[63608,54245],"passed":true},{"actual":[78777,0],"check":"expired before period","expected":[92990,0],"passed":false},{"actual":[254,92587],"check":"written on period end","expected":[254,92587],"passed":true},{"actual":[44414,24152],"check":"portfolio","expected":[239117,24152],"passed":false},{"actual":"invalid term","check":"invalid term","expected":"invalid term","passed":true},{"actual":[238035,10099],"check":"short-term in period","expected":[238035,10099],"passed":true},{"actual":[146759,3622],"check":"odd premiums","expected":[146759,3622],"passed":true},{"actual":[194447,370248],"check":"multi-year policy written before period","expected":[194447,370248],"passed":true},{"actual":[37,0],"check":"straddling policies with fractional cents","expected":[37,0],"passed":true},{"actual":[234969,19826],"check":"odd short-term book","expected":[234969,19826],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"written before period\", \"actual\": [83147, 0], \"expected\": [83147, 0], \"passed\": true}, {\"check\": \"written inside period\", \"actual\": [63608, 54245], \"expected\": [63608, 54245], \"passed\": true}, {\"check\": \"expired before period\", \"actual\": [78777, 0], \"expected\": [92990, 0], \"passed\": false}, {\"check\": \"written on period end\", \"actual\": [254, 92587], \"expected\": [254, 92587], \"passed\": true}, {\"check\": \"portfolio\", \"actual\": [44414, 24152], \"expected\": [239117, 24152], \"passed\": false}, {\"check\": \"invalid term\", \"actual\": \"invalid term\", \"expected\": \"invalid term\", \"passed\": true}, {\"check\": \"short-term in period\", \"actual\": [238035, 10099], \"expected\": [238035, 10099], \"passed\": true}, {\"check\": \"odd premiums\", \"actual\": [146759, 3622], \"expected\": [146759, 3622], \"passed\": true}, {\"check\": \"multi-year policy written before period\", \"actual\": [194447, 370248], \"expected\": [194447, 370248], \"passed\": true}, {\"check\": \"straddling policies with fractional cents\", \"actual\": [37, 0], \"expected\": [37, 0], \"passed\": true}, {\"check\": \"odd short-term book\", \"actual\": [234969, 19826], \"expected\": [234969, 19826], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.637,"exit_code":1,"observations":[{"actual":[83147,0],"check":"written before period","expected":[83147,0],"passed":true},{"actual":[63608,54245],"check":"written inside period","expected":[63608,54245],"passed":true},{"actual":[78777,0],"check":"expired before period","expected":[92990,0],"passed":false},{"actual":[254,92587],"check":"written on period end","expected":[254,92587],"passed":true},{"actual":[44414,24152],"check":"portfolio","expected":[239117,24152],"passed":false},{"actual":"invalid term","check":"invalid term","expected":"invalid term","passed":true},{"actual":[238035,10099],"check":"short-term in period","expected":[238035,10099],"passed":true},{"actual":[146759,3622],"check":"odd premiums","expected":[146759,3622],"passed":true},{"actual":[194447,370248],"check":"multi-year policy written before period","expected":[194447,370248],"passed":true},{"actual":[37,0],"check":"straddling policies with fractional cents","expected":[37,0],"passed":true},{"actual":[234969,19826],"check":"odd short-term book","expected":[234969,19826],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"written before period\", \"actual\": [83147, 0], \"expected\": [83147, 0], \"passed\": true}, {\"check\": \"written inside period\", \"actual\": [63608, 54245], \"expected\": [63608, 54245], \"passed\": true}, {\"check\": \"expired before period\", \"actual\": [78777, 0], \"expected\": [92990, 0], \"passed\": false}, {\"check\": \"written on period end\", \"actual\": [254, 92587], \"expected\": [254, 92587], \"passed\": true}, {\"check\": \"portfolio\", \"actual\": [44414, 24152], \"expected\": [239117, 24152], \"passed\": false}, {\"check\": \"invalid term\", \"actual\": \"invalid term\", \"expected\": \"invalid term\", \"passed\": true}, {\"check\": \"short-term in period\", \"actual\": [238035, 10099], \"expected\": [238035, 10099], \"passed\": true}, {\"check\": \"odd premiums\", \"actual\": [146759, 3622], \"expected\": [146759, 3622], \"passed\": true}, {\"check\": \"multi-year policy written before period\", \"actual\": [194447, 370248], \"expected\": [194447, 370248], \"passed\": true}, {\"check\": \"straddling policies with fractional cents\", \"actual\": [37, 0], \"expected\": [37, 0], \"passed\": true}, {\"check\": \"odd short-term book\", \"actual\": [234969, 19826], \"expected\": [234969, 19826], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.957,"exit_code":0,"observations":[{"actual":[83147,0],"check":"written before period","expected":[83147,0],"passed":true},{"actual":[63608,54245],"check":"written inside period","expected":[63608,54245],"passed":true},{"actual":[92990,0],"check":"expired before period","expected":[92990,0],"passed":true},{"actual":[254,92587],"check":"written on period end","expected":[254,92587],"passed":true},{"actual":[239117,24152],"check":"portfolio","expected":[239117,24152],"passed":true},{"actual":"invalid term","check":"invalid term","expected":"invalid term","passed":true},{"actual":[238035,10099],"check":"short-term in period","expected":[238035,10099],"passed":true},{"actual":[146759,3622],"check":"odd premiums","expected":[146759,3622],"passed":true},{"actual":[194447,370248],"check":"multi-year policy written before period","expected":[194447,370248],"passed":true},{"actual":[37,0],"check":"straddling policies with fractional cents","expected":[37,0],"passed":true},{"actual":[234969,19826],"check":"odd short-term book","expected":[234969,19826],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"written before period\", \"actual\": [83147, 0], \"expected\": [83147, 0], \"passed\": true}, {\"check\": \"written inside period\", \"actual\": [63608, 54245], \"expected\": [63608, 54245], \"passed\": true}, {\"check\": \"expired before period\", \"actual\": [92990, 0], \"expected\": [92990, 0], \"passed\": true}, {\"check\": \"written on period end\", \"actual\": [254, 92587], \"expected\": [254, 92587], \"passed\": true}, {\"check\": \"portfolio\", \"actual\": [239117, 24152], \"expected\": [239117, 24152], \"passed\": true}, {\"check\": \"invalid term\", \"actual\": \"invalid term\", \"expected\": \"invalid term\", \"passed\": true}, {\"check\": \"short-term in period\", \"actual\": [238035, 10099], \"expected\": [238035, 10099], \"passed\": true}, {\"check\": \"odd premiums\", \"actual\": [146759, 3622], \"expected\": [146759, 3622], \"passed\": true}, {\"check\": \"multi-year policy written before period\", \"actual\": [194447, 370248], \"expected\": [194447, 370248], \"passed\": true}, {\"check\": \"straddling policies with fractional cents\", \"actual\": [37, 0], \"expected\": [37, 0], \"passed\": true}, {\"check\": \"odd short-term book\", \"actual\": [234969, 19826], \"expected\": [234969, 19826], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}