FAILURE MAP
← Case archive

FA-62936 / Insurance premium rating / Open access

Short-rate cancellation return premium: Return is raised to the minimum instead of capped by it · case 01

Insured cancellations refund more than the premium minus the minimum earned amount.

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

ROOT CAUSE

max() is used where the minimum earned premium should cap the refund.

VERIFIED REPAIR

Cap the refund with min(return, premium - minimum earned).

Unsuccessful approach: Capping at the minimum earned amount itself confuses retained premium with refundable premium.

Case contract

Input premium, term_days, days_in_force d, initiator, min_earned_permille. d<0 or term<=0 -> 'invalid'; d>=term -> 0; d==0 (flat cancel) returns the full premium. Otherwise unearned = premium*(term-d)/term; the insurer returns it in full; an insured cancellation returns 90% of unearned but never more than premium minus the minimum earned premium. Round half-up once.

Why this case matters

Premium rating engines apply ordered tabular rules where one misplaced boundary or step silently misprices policies.

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):
    p=x['premium']; t=x['term_days']; d=x['days_in_force']
    if d<0 or t<=0: return 'invalid'
    if d>=t: return 0
    if d==0: return p
    unearned=Fraction(p*(t-d),t)
    if x['initiator']=='insured':
        ret=unearned*Fraction(90,100)
        ret=max(ret,p-Fraction(p*x['min_earned_permille'],1000))
    else:
        ret=unearned
    return math.floor(ret+Fraction(1,2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]
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
insured cancels mid-term150441103866Failed
insurer cancels mid-term2363323633Passed
insurer cancel early with minimum on file123550123550Passed
insured minimum earned binds8598671585Failed
flat cancel by insured246750246750Passed
flat cancel by insurer7760477604Passed
one day in force284060284060Passed
expiry day00Passed
negative days rejectedinvalidinvalidPassed
six month policy insured cancel15247464508Failed

SHA-256 / b32b82dd583f548ba368ec3073661539b219a06625f574d6ffee425f385945d1

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):
    p=x['premium']; t=x['term_days']; d=x['days_in_force']
    if d<0 or t<=0: return 'invalid'
    if d>=t: return 0
    if d==0: return p
    unearned=Fraction(p*(t-d),t)
    if x['initiator']=='insured':
        ret=unearned*Fraction(90,100)
        ret=min(ret,Fraction(p*x['min_earned_permille'],1000))
    else:
        ret=unearned
    return math.floor(ret+Fraction(1,2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]
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
insured cancels mid-term16716103866Failed
insurer cancels mid-term2363323633Passed
insurer cancel early with minimum on file123550123550Passed
insured minimum earned binds3067971585Failed
flat cancel by insured246750246750Passed
flat cancel by insurer7760477604Passed
one day in force284060284060Passed
expiry day00Passed
negative days rejectedinvalidinvalidPassed
six month policy insured cancel1694264508Failed

SHA-256 / 0720cd197acf078f5d7e4a7c733d62854f465881ea5870fb116f11ba7aa8f533

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):
    p=x['premium']; t=x['term_days']; d=x['days_in_force']
    if d<0 or t<=0: return 'invalid'
    if d>=t: return 0
    if d==0: return p
    unearned=Fraction(p*(t-d),t)
    if x['initiator']=='insured':
        ret=unearned*Fraction(90,100)
        ret=min(ret,p-Fraction(p*x['min_earned_permille'],1000))
    else:
        ret=unearned
    return math.floor(ret+Fraction(1,2))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]
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
insured cancels mid-term103866103866Passed
insurer cancels mid-term2363323633Passed
insurer cancel early with minimum on file123550123550Passed
insured minimum earned binds7158571585Passed
flat cancel by insured246750246750Passed
flat cancel by insurer7760477604Passed
one day in force284060284060Passed
expiry day00Passed
negative days rejectedinvalidinvalidPassed
six month policy insured cancel6450864508Passed

SHA-256 / 8c6d8f7d5b6d5cb471c05c630920bceb4897fca789049505fe23d6fafbd9ece3

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

Case digest / 0459806a0a8208902bc9b1022ec5092d4cd694c07ccf944b7790308cda5c424c