{"abstract":"The first installment is larger than the rest instead of the final one.","category":"Insurance premium rating","checks":9,"contract":"Input premium, n total payments including the down payment (n<1 -> 'invalid'; n==1 -> [premium], no fee), down (per mille), fee per installment. Down = premium*down/1000 rounded half-up; the rest splits over n-1 installments by floor division with the remainder added to the last installment; each installment after the down payment carries the fee.","evaluation_group":"w2-insurance_premium_rating-installment-schedule","failed_approach":"Spreading the leftover cents one by one over the earliest installments still moves them off the last payment.","family":"w2-insurance_premium_rating-installment-schedule-remainder-placement","id":"FA-63091","implementations":{"attempt":{"sha256":"c6f6b3e4e1ffcab04d32c82bf0437e249ec92aeaa9b617a28287fc9ca3f86927","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; n=x['n']\n    if n<1: return 'invalid'\n    if n==1: return [p]\n    down=math.floor(Fraction(p*x['down'],1000)+Fraction(1,2))\n    rest=p-down\n    k=n-1\n    each=rest//k\n    pays=[each]*k\n    for j in range(rest-each*k): pays[j]+=1\n    return [down]+[v+x['fee'] for v in pays]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['4-pay plan', {'premium': 200651, 'n': 4, 'down': 167, 'fee': 800}, [33509, 56514, 56514, 56514]], ['6-pay plan', {'premium': 350494, 'n': 6, 'down': 167, 'fee': 800}, [58532, 59192, 59192, 59192, 59192, 59194]], ['10-pay plan', {'premium': 279898, 'n': 10, 'down': 167, 'fee': 500}, [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407]], ['12-pay plan', {'premium': 102439, 'n': 12, 'down': 167, 'fee': 800}, [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562]], ['paid in full', {'premium': 307291, 'n': 1, 'down': 167, 'fee': 800}, [307291]], ['two-pay plan', {'premium': 207937, 'n': 2, 'down': 200, 'fee': 300}, [41587, 166650]], ['remainder near divisor', {'premium': 120011, 'n': 12, 'down': 250, 'fee': 800}, [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988]], ['zero payments rejected', {'premium': 268868, 'n': 0, 'down': 167, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 196615, 'n': 3, 'down': 333, 'fee': 500}, [65473, 66071, 66071]]], [['4-pay plan', {'premium': 278629, 'n': 4, 'down': 200, 'fee': 500}, [55726, 74801, 74801, 74801]], ['6-pay plan', {'premium': 140214, 'n': 6, 'down': 167, 'fee': 800}, [23416, 24159, 24159, 24159, 24159, 24162]], ['10-pay plan', {'premium': 288301, 'n': 10, 'down': 200, 'fee': 300}, [57660, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25933]], ['12-pay plan', {'premium': 203291, 'n': 12, 'down': 167, 'fee': 300}, [33950, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15701]], ['paid in full', {'premium': 290219, 'n': 1, 'down': 200, 'fee': 500}, [290219]], ['two-pay plan', {'premium': 327447, 'n': 2, 'down': 167, 'fee': 800}, [54684, 273563]], ['remainder near divisor', {'premium': 240010, 'n': 12, 'down': 250, 'fee': 500}, [60003, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16867]], ['zero payments rejected', {'premium': 110809, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 194859, 'n': 3, 'down': 333, 'fee': 500}, [64888, 65485, 65486]]], [['4-pay plan', {'premium': 99003, 'n': 4, 'down': 250, 'fee': 800}, [24751, 25550, 25550, 25552]], ['6-pay plan', {'premium': 189567, 'n': 6, 'down': 200, 'fee': 300}, [37913, 30630, 30630, 30630, 30630, 30634]], ['10-pay plan', {'premium': 125451, 'n': 10, 'down': 250, 'fee': 300}, [31363, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10756]], ['12-pay plan', {'premium': 268137, 'n': 12, 'down': 167, 'fee': 300}, [44779, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20608]], ['paid in full', {'premium': 154367, 'n': 1, 'down': 167, 'fee': 300}, [154367]], ['two-pay plan', {'premium': 232264, 'n': 2, 'down': 250, 'fee': 300}, [58066, 174498]], ['remainder near divisor', {'premium': 360009, 'n': 12, 'down': 250, 'fee': 300}, [90002, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24847]], ['zero payments rejected', {'premium': 340488, 'n': 0, 'down': 250, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 186247, 'n': 3, 'down': 333, 'fee': 300}, [62020, 62413, 62414]]], [['4-pay plan', {'premium': 244184, 'n': 4, 'down': 250, 'fee': 500}, [61046, 61546, 61546, 61546]], ['6-pay plan', {'premium': 208899, 'n': 6, 'down': 250, 'fee': 300}, [52225, 31634, 31634, 31634, 31634, 31638]], ['10-pay plan', {'premium': 356410, 'n': 10, 'down': 167, 'fee': 500}, [59520, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33494]], ['12-pay plan', {'premium': 259663, 'n': 12, 'down': 167, 'fee': 300}, [43364, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19969]], ['paid in full', {'premium': 141455, 'n': 1, 'down': 200, 'fee': 500}, [141455]], ['two-pay plan', {'premium': 363430, 'n': 2, 'down': 167, 'fee': 300}, [60693, 303037]], ['remainder near divisor', {'premium': 480011, 'n': 12, 'down': 250, 'fee': 500}, [120003, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228]], ['zero payments rejected', {'premium': 319176, 'n': 0, 'down': 250, 'fee': 300}, 'invalid'], ['uneven split', {'premium': 168985, 'n': 3, 'down': 333, 'fee': 500}, [56272, 56856, 56857]]], [['4-pay plan', {'premium': 198200, 'n': 4, 'down': 250, 'fee': 500}, [49550, 50050, 50050, 50050]], ['6-pay plan', {'premium': 321940, 'n': 6, 'down': 167, 'fee': 800}, [53764, 54435, 54435, 54435, 54435, 54436]], ['10-pay plan', {'premium': 145512, 'n': 10, 'down': 250, 'fee': 800}, [36378, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926]], ['12-pay plan', {'premium': 277547, 'n': 12, 'down': 167, 'fee': 300}, [46350, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21327]], ['paid in full', {'premium': 169996, 'n': 1, 'down': 250, 'fee': 500}, [169996]], ['two-pay plan', {'premium': 85146, 'n': 2, 'down': 250, 'fee': 300}, [21287, 64159]], ['remainder near divisor', {'premium': 600010, 'n': 12, 'down': 250, 'fee': 300}, [150003, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41217]], ['zero payments rejected', {'premium': 285765, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 136733, 'n': 3, 'down': 333, 'fee': 300}, [45532, 45900, 45901]]]]\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":"2a61769eb937940f087e15eccb6d2b44f6752aeb20dc4f8392e9d871fd461f13","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; n=x['n']\n    if n<1: return 'invalid'\n    if n==1: return [p]\n    down=math.floor(Fraction(p*x['down'],1000)+Fraction(1,2))\n    rest=p-down\n    k=n-1\n    each=rest//k\n    pays=[each]*k\n    pays[0]+=rest-each*k\n    return [down]+[v+x['fee'] for v in pays]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['4-pay plan', {'premium': 200651, 'n': 4, 'down': 167, 'fee': 800}, [33509, 56514, 56514, 56514]], ['6-pay plan', {'premium': 350494, 'n': 6, 'down': 167, 'fee': 800}, [58532, 59192, 59192, 59192, 59192, 59194]], ['10-pay plan', {'premium': 279898, 'n': 10, 'down': 167, 'fee': 500}, [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407]], ['12-pay plan', {'premium': 102439, 'n': 12, 'down': 167, 'fee': 800}, [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562]], ['paid in full', {'premium': 307291, 'n': 1, 'down': 167, 'fee': 800}, [307291]], ['two-pay plan', {'premium': 207937, 'n': 2, 'down': 200, 'fee': 300}, [41587, 166650]], ['remainder near divisor', {'premium': 120011, 'n': 12, 'down': 250, 'fee': 800}, [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988]], ['zero payments rejected', {'premium': 268868, 'n': 0, 'down': 167, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 196615, 'n': 3, 'down': 333, 'fee': 500}, [65473, 66071, 66071]]], [['4-pay plan', {'premium': 278629, 'n': 4, 'down': 200, 'fee': 500}, [55726, 74801, 74801, 74801]], ['6-pay plan', {'premium': 140214, 'n': 6, 'down': 167, 'fee': 800}, [23416, 24159, 24159, 24159, 24159, 24162]], ['10-pay plan', {'premium': 288301, 'n': 10, 'down': 200, 'fee': 300}, [57660, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25933]], ['12-pay plan', {'premium': 203291, 'n': 12, 'down': 167, 'fee': 300}, [33950, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15701]], ['paid in full', {'premium': 290219, 'n': 1, 'down': 200, 'fee': 500}, [290219]], ['two-pay plan', {'premium': 327447, 'n': 2, 'down': 167, 'fee': 800}, [54684, 273563]], ['remainder near divisor', {'premium': 240010, 'n': 12, 'down': 250, 'fee': 500}, [60003, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16867]], ['zero payments rejected', {'premium': 110809, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 194859, 'n': 3, 'down': 333, 'fee': 500}, [64888, 65485, 65486]]], [['4-pay plan', {'premium': 99003, 'n': 4, 'down': 250, 'fee': 800}, [24751, 25550, 25550, 25552]], ['6-pay plan', {'premium': 189567, 'n': 6, 'down': 200, 'fee': 300}, [37913, 30630, 30630, 30630, 30630, 30634]], ['10-pay plan', {'premium': 125451, 'n': 10, 'down': 250, 'fee': 300}, [31363, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10756]], ['12-pay plan', {'premium': 268137, 'n': 12, 'down': 167, 'fee': 300}, [44779, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20608]], ['paid in full', {'premium': 154367, 'n': 1, 'down': 167, 'fee': 300}, [154367]], ['two-pay plan', {'premium': 232264, 'n': 2, 'down': 250, 'fee': 300}, [58066, 174498]], ['remainder near divisor', {'premium': 360009, 'n': 12, 'down': 250, 'fee': 300}, [90002, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24847]], ['zero payments rejected', {'premium': 340488, 'n': 0, 'down': 250, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 186247, 'n': 3, 'down': 333, 'fee': 300}, [62020, 62413, 62414]]], [['4-pay plan', {'premium': 244184, 'n': 4, 'down': 250, 'fee': 500}, [61046, 61546, 61546, 61546]], ['6-pay plan', {'premium': 208899, 'n': 6, 'down': 250, 'fee': 300}, [52225, 31634, 31634, 31634, 31634, 31638]], ['10-pay plan', {'premium': 356410, 'n': 10, 'down': 167, 'fee': 500}, [59520, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33494]], ['12-pay plan', {'premium': 259663, 'n': 12, 'down': 167, 'fee': 300}, [43364, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19969]], ['paid in full', {'premium': 141455, 'n': 1, 'down': 200, 'fee': 500}, [141455]], ['two-pay plan', {'premium': 363430, 'n': 2, 'down': 167, 'fee': 300}, [60693, 303037]], ['remainder near divisor', {'premium': 480011, 'n': 12, 'down': 250, 'fee': 500}, [120003, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228]], ['zero payments rejected', {'premium': 319176, 'n': 0, 'down': 250, 'fee': 300}, 'invalid'], ['uneven split', {'premium': 168985, 'n': 3, 'down': 333, 'fee': 500}, [56272, 56856, 56857]]], [['4-pay plan', {'premium': 198200, 'n': 4, 'down': 250, 'fee': 500}, [49550, 50050, 50050, 50050]], ['6-pay plan', {'premium': 321940, 'n': 6, 'down': 167, 'fee': 800}, [53764, 54435, 54435, 54435, 54435, 54436]], ['10-pay plan', {'premium': 145512, 'n': 10, 'down': 250, 'fee': 800}, [36378, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926]], ['12-pay plan', {'premium': 277547, 'n': 12, 'down': 167, 'fee': 300}, [46350, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21327]], ['paid in full', {'premium': 169996, 'n': 1, 'down': 250, 'fee': 500}, [169996]], ['two-pay plan', {'premium': 85146, 'n': 2, 'down': 250, 'fee': 300}, [21287, 64159]], ['remainder near divisor', {'premium': 600010, 'n': 12, 'down': 250, 'fee': 300}, [150003, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41217]], ['zero payments rejected', {'premium': 285765, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 136733, 'n': 3, 'down': 333, 'fee': 300}, [45532, 45900, 45901]]]]\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":"e702a40e6f03e6c74a03c2e3634e86537fdb0068820ecd4ea464560b2f061b8f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; n=x['n']\n    if n<1: return 'invalid'\n    if n==1: return [p]\n    down=math.floor(Fraction(p*x['down'],1000)+Fraction(1,2))\n    rest=p-down\n    k=n-1\n    each=rest//k\n    pays=[each]*k\n    pays[-1]+=rest-each*k\n    return [down]+[v+x['fee'] for v in pays]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['4-pay plan', {'premium': 200651, 'n': 4, 'down': 167, 'fee': 800}, [33509, 56514, 56514, 56514]], ['6-pay plan', {'premium': 350494, 'n': 6, 'down': 167, 'fee': 800}, [58532, 59192, 59192, 59192, 59192, 59194]], ['10-pay plan', {'premium': 279898, 'n': 10, 'down': 167, 'fee': 500}, [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407]], ['12-pay plan', {'premium': 102439, 'n': 12, 'down': 167, 'fee': 800}, [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562]], ['paid in full', {'premium': 307291, 'n': 1, 'down': 167, 'fee': 800}, [307291]], ['two-pay plan', {'premium': 207937, 'n': 2, 'down': 200, 'fee': 300}, [41587, 166650]], ['remainder near divisor', {'premium': 120011, 'n': 12, 'down': 250, 'fee': 800}, [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988]], ['zero payments rejected', {'premium': 268868, 'n': 0, 'down': 167, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 196615, 'n': 3, 'down': 333, 'fee': 500}, [65473, 66071, 66071]]], [['4-pay plan', {'premium': 278629, 'n': 4, 'down': 200, 'fee': 500}, [55726, 74801, 74801, 74801]], ['6-pay plan', {'premium': 140214, 'n': 6, 'down': 167, 'fee': 800}, [23416, 24159, 24159, 24159, 24159, 24162]], ['10-pay plan', {'premium': 288301, 'n': 10, 'down': 200, 'fee': 300}, [57660, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25926, 25933]], ['12-pay plan', {'premium': 203291, 'n': 12, 'down': 167, 'fee': 300}, [33950, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15694, 15701]], ['paid in full', {'premium': 290219, 'n': 1, 'down': 200, 'fee': 500}, [290219]], ['two-pay plan', {'premium': 327447, 'n': 2, 'down': 167, 'fee': 800}, [54684, 273563]], ['remainder near divisor', {'premium': 240010, 'n': 12, 'down': 250, 'fee': 500}, [60003, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16864, 16867]], ['zero payments rejected', {'premium': 110809, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 194859, 'n': 3, 'down': 333, 'fee': 500}, [64888, 65485, 65486]]], [['4-pay plan', {'premium': 99003, 'n': 4, 'down': 250, 'fee': 800}, [24751, 25550, 25550, 25552]], ['6-pay plan', {'premium': 189567, 'n': 6, 'down': 200, 'fee': 300}, [37913, 30630, 30630, 30630, 30630, 30634]], ['10-pay plan', {'premium': 125451, 'n': 10, 'down': 250, 'fee': 300}, [31363, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10756]], ['12-pay plan', {'premium': 268137, 'n': 12, 'down': 167, 'fee': 300}, [44779, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20605, 20608]], ['paid in full', {'premium': 154367, 'n': 1, 'down': 167, 'fee': 300}, [154367]], ['two-pay plan', {'premium': 232264, 'n': 2, 'down': 250, 'fee': 300}, [58066, 174498]], ['remainder near divisor', {'premium': 360009, 'n': 12, 'down': 250, 'fee': 300}, [90002, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24846, 24847]], ['zero payments rejected', {'premium': 340488, 'n': 0, 'down': 250, 'fee': 800}, 'invalid'], ['uneven split', {'premium': 186247, 'n': 3, 'down': 333, 'fee': 300}, [62020, 62413, 62414]]], [['4-pay plan', {'premium': 244184, 'n': 4, 'down': 250, 'fee': 500}, [61046, 61546, 61546, 61546]], ['6-pay plan', {'premium': 208899, 'n': 6, 'down': 250, 'fee': 300}, [52225, 31634, 31634, 31634, 31634, 31638]], ['10-pay plan', {'premium': 356410, 'n': 10, 'down': 167, 'fee': 500}, [59520, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33487, 33494]], ['12-pay plan', {'premium': 259663, 'n': 12, 'down': 167, 'fee': 300}, [43364, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19963, 19969]], ['paid in full', {'premium': 141455, 'n': 1, 'down': 200, 'fee': 500}, [141455]], ['two-pay plan', {'premium': 363430, 'n': 2, 'down': 167, 'fee': 300}, [60693, 303037]], ['remainder near divisor', {'premium': 480011, 'n': 12, 'down': 250, 'fee': 500}, [120003, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228, 33228]], ['zero payments rejected', {'premium': 319176, 'n': 0, 'down': 250, 'fee': 300}, 'invalid'], ['uneven split', {'premium': 168985, 'n': 3, 'down': 333, 'fee': 500}, [56272, 56856, 56857]]], [['4-pay plan', {'premium': 198200, 'n': 4, 'down': 250, 'fee': 500}, [49550, 50050, 50050, 50050]], ['6-pay plan', {'premium': 321940, 'n': 6, 'down': 167, 'fee': 800}, [53764, 54435, 54435, 54435, 54435, 54436]], ['10-pay plan', {'premium': 145512, 'n': 10, 'down': 250, 'fee': 800}, [36378, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926, 12926]], ['12-pay plan', {'premium': 277547, 'n': 12, 'down': 167, 'fee': 300}, [46350, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21317, 21327]], ['paid in full', {'premium': 169996, 'n': 1, 'down': 250, 'fee': 500}, [169996]], ['two-pay plan', {'premium': 85146, 'n': 2, 'down': 250, 'fee': 300}, [21287, 64159]], ['remainder near divisor', {'premium': 600010, 'n': 12, 'down': 250, 'fee': 300}, [150003, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41209, 41217]], ['zero payments rejected', {'premium': 285765, 'n': 0, 'down': 200, 'fee': 500}, 'invalid'], ['uneven split', {'premium': 136733, 'n': 3, 'down': 333, 'fee': 300}, [45532, 45900, 45901]]]]\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-installment-schedule-remainder-placement","generated_at":"2026-09-29T14:47:10.898891+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Installment billing must collect exactly the premium plus disclosed fees, with remainders placed where the plan says.","repair":"Add rest - each*k to the last installment.","root_cause":"The leftover cents are added to the first scheduled installment.","sha256":"fd4ac45e651919738642d67cf4cfeb2f2dfe3635e69023529e0698850951b307","title":"Premium installment schedule: Rounding remainder lands on the first installment · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.25,"exit_code":1,"observations":[{"actual":[33509,56514,56514,56514],"check":"4-pay plan","expected":[33509,56514,56514,56514],"passed":true},{"actual":[58532,59193,59193,59192,59192,59192],"check":"6-pay plan","expected":[58532,59192,59192,59192,59192,59194],"passed":false},{"actual":[46743,26407,26406,26406,26406,26406,26406,26406,26406,26406],"check":"10-pay plan","expected":[46743,26406,26406,26406,26406,26406,26406,26406,26406,26407],"passed":false},{"actual":[17107,8558,8558,8558,8558,8558,8557,8557,8557,8557,8557,8557],"check":"12-pay plan","expected":[17107,8557,8557,8557,8557,8557,8557,8557,8557,8557,8557,8562],"passed":false},{"actual":[307291],"check":"paid in full","expected":[307291],"passed":true},{"actual":[41587,166650],"check":"two-pay plan","expected":[41587,166650],"passed":true},{"actual":[30003,8983,8983,8983,8983,8983,8983,8982,8982,8982,8982,8982],"check":"remainder near divisor","expected":[30003,8982,8982,8982,8982,8982,8982,8982,8982,8982,8982,8988],"passed":false},{"actual":"invalid","check":"zero payments rejected","expected":"invalid","passed":true},{"actual":[65473,66071,66071],"check":"uneven split","expected":[65473,66071,66071],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"4-pay plan\", \"actual\": [33509, 56514, 56514, 56514], \"expected\": [33509, 56514, 56514, 56514], \"passed\": true}, {\"check\": \"6-pay plan\", \"actual\": [58532, 59193, 59193, 59192, 59192, 59192], \"expected\": [58532, 59192, 59192, 59192, 59192, 59194], \"passed\": false}, {\"check\": \"10-pay plan\", \"actual\": [46743, 26407, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406], \"expected\": [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407], \"passed\": false}, {\"check\": \"12-pay plan\", \"actual\": [17107, 8558, 8558, 8558, 8558, 8558, 8557, 8557, 8557, 8557, 8557, 8557], \"expected\": [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562], \"passed\": false}, {\"check\": \"paid in full\", \"actual\": [307291], \"expected\": [307291], \"passed\": true}, {\"check\": \"two-pay plan\", \"actual\": [41587, 166650], \"expected\": [41587, 166650], \"passed\": true}, {\"check\": \"remainder near divisor\", \"actual\": [30003, 8983, 8983, 8983, 8983, 8983, 8983, 8982, 8982, 8982, 8982, 8982], \"expected\": [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988], \"passed\": false}, {\"check\": \"zero payments rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"uneven split\", \"actual\": [65473, 66071, 66071], \"expected\": [65473, 66071, 66071], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.784,"exit_code":1,"observations":[{"actual":[33509,56514,56514,56514],"check":"4-pay plan","expected":[33509,56514,56514,56514],"passed":true},{"actual":[58532,59194,59192,59192,59192,59192],"check":"6-pay plan","expected":[58532,59192,59192,59192,59192,59194],"passed":false},{"actual":[46743,26407,26406,26406,26406,26406,26406,26406,26406,26406],"check":"10-pay plan","expected":[46743,26406,26406,26406,26406,26406,26406,26406,26406,26407],"passed":false},{"actual":[17107,8562,8557,8557,8557,8557,8557,8557,8557,8557,8557,8557],"check":"12-pay plan","expected":[17107,8557,8557,8557,8557,8557,8557,8557,8557,8557,8557,8562],"passed":false},{"actual":[307291],"check":"paid in full","expected":[307291],"passed":true},{"actual":[41587,166650],"check":"two-pay plan","expected":[41587,166650],"passed":true},{"actual":[30003,8988,8982,8982,8982,8982,8982,8982,8982,8982,8982,8982],"check":"remainder near divisor","expected":[30003,8982,8982,8982,8982,8982,8982,8982,8982,8982,8982,8988],"passed":false},{"actual":"invalid","check":"zero payments rejected","expected":"invalid","passed":true},{"actual":[65473,66071,66071],"check":"uneven split","expected":[65473,66071,66071],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"4-pay plan\", \"actual\": [33509, 56514, 56514, 56514], \"expected\": [33509, 56514, 56514, 56514], \"passed\": true}, {\"check\": \"6-pay plan\", \"actual\": [58532, 59194, 59192, 59192, 59192, 59192], \"expected\": [58532, 59192, 59192, 59192, 59192, 59194], \"passed\": false}, {\"check\": \"10-pay plan\", \"actual\": [46743, 26407, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406], \"expected\": [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407], \"passed\": false}, {\"check\": \"12-pay plan\", \"actual\": [17107, 8562, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557], \"expected\": [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562], \"passed\": false}, {\"check\": \"paid in full\", \"actual\": [307291], \"expected\": [307291], \"passed\": true}, {\"check\": \"two-pay plan\", \"actual\": [41587, 166650], \"expected\": [41587, 166650], \"passed\": true}, {\"check\": \"remainder near divisor\", \"actual\": [30003, 8988, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982], \"expected\": [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988], \"passed\": false}, {\"check\": \"zero payments rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"uneven split\", \"actual\": [65473, 66071, 66071], \"expected\": [65473, 66071, 66071], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.703,"exit_code":0,"observations":[{"actual":[33509,56514,56514,56514],"check":"4-pay plan","expected":[33509,56514,56514,56514],"passed":true},{"actual":[58532,59192,59192,59192,59192,59194],"check":"6-pay plan","expected":[58532,59192,59192,59192,59192,59194],"passed":true},{"actual":[46743,26406,26406,26406,26406,26406,26406,26406,26406,26407],"check":"10-pay plan","expected":[46743,26406,26406,26406,26406,26406,26406,26406,26406,26407],"passed":true},{"actual":[17107,8557,8557,8557,8557,8557,8557,8557,8557,8557,8557,8562],"check":"12-pay plan","expected":[17107,8557,8557,8557,8557,8557,8557,8557,8557,8557,8557,8562],"passed":true},{"actual":[307291],"check":"paid in full","expected":[307291],"passed":true},{"actual":[41587,166650],"check":"two-pay plan","expected":[41587,166650],"passed":true},{"actual":[30003,8982,8982,8982,8982,8982,8982,8982,8982,8982,8982,8988],"check":"remainder near divisor","expected":[30003,8982,8982,8982,8982,8982,8982,8982,8982,8982,8982,8988],"passed":true},{"actual":"invalid","check":"zero payments rejected","expected":"invalid","passed":true},{"actual":[65473,66071,66071],"check":"uneven split","expected":[65473,66071,66071],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"4-pay plan\", \"actual\": [33509, 56514, 56514, 56514], \"expected\": [33509, 56514, 56514, 56514], \"passed\": true}, {\"check\": \"6-pay plan\", \"actual\": [58532, 59192, 59192, 59192, 59192, 59194], \"expected\": [58532, 59192, 59192, 59192, 59192, 59194], \"passed\": true}, {\"check\": \"10-pay plan\", \"actual\": [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407], \"expected\": [46743, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26406, 26407], \"passed\": true}, {\"check\": \"12-pay plan\", \"actual\": [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562], \"expected\": [17107, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8557, 8562], \"passed\": true}, {\"check\": \"paid in full\", \"actual\": [307291], \"expected\": [307291], \"passed\": true}, {\"check\": \"two-pay plan\", \"actual\": [41587, 166650], \"expected\": [41587, 166650], \"passed\": true}, {\"check\": \"remainder near divisor\", \"actual\": [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988], \"expected\": [30003, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8982, 8988], \"passed\": true}, {\"check\": \"zero payments rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"uneven split\", \"actual\": [65473, 66071, 66071], \"expected\": [65473, 66071, 66071], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}