{"abstract":"Accrued interest includes days before the bond existed.","category":"Bond day-count conventions","checks":8,"contract":"Inputs issue, first coupon and settlement [y,m,d], annual rate and months per period. Settlement must lie in [issue, first] else return \"settlement outside first period\". Quasi-coupon dates are generated back from the first coupon in steps of months (day clamped to month length) until one is on or before issue. For each quasi period [start, end), accrued days are those in [max(start, issue), min(end, settle)) and are divided by that quasi period length. Accrued = 100*rate/freq*sum, rounded to 6 decimals.","contract_signature":"issue, first, settle, rate, months","evaluation_group":"w2-bond_day_count_conventions-long-first-coupon-quasi","failed_approach":"Clipping only the most recent quasi period misses the oldest one that contains issue.","family":"w2-bond_day_count_conventions-long-first-coupon-quasi-issue-date-clipping","id":"FA-61056","implementations":{"attempt":{"sha256":"3de5036fb5aa72229c9567b994e5b8c652247417cfc17fac807efe7d39dfd58e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(issue, first, settle, rate, months):\n    def mlen(y, m):\n        if m == 2:\n            return 29 if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 else 28\n        return 30 if m in (4, 6, 9, 11) else 31\n    I = datetime.date(*issue)\n    Fc = datetime.date(*first)\n    S = datetime.date(*settle)\n    if not (I <= S <= Fc):\n        return 'settlement outside first period'\n    freq = 12 // months\n    def back(k):\n        t = Fc.year * 12 + Fc.month - 1 - k * months\n        y, m = t // 12, t % 12 + 1\n        return datetime.date(y, m, min(Fc.day, mlen(y, m)))\n    q = [Fc]\n    k = 1\n    while q[-1] > I:\n        q.append(back(k))\n        k += 1\n    frac = Fraction(0)\n    for j in range(len(q) - 1):\n        end, start = q[j], q[j + 1]\n        lo = max(start, I) if j == 0 else start\n        hi = min(end, S)\n        if hi > lo:\n            frac += Fraction((hi - lo).days, (end - start).days)\n    return round(float(100 * Fraction(str(rate)) / freq * frac), 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression issue date clipping 1', [[2006, 8, 4], [2006, 9, 30], [2006, 8, 13], 0.05, 3], 0.122283], ['regression issue date clipping 2', [[2038, 5, 29], [2038, 7, 25], [2038, 7, 24], 0.045, 3], 0.692308], ['partial repair probe 1', [[2028, 3, 6], [2028, 4, 26], [2028, 3, 15], 0.03, 1], 0.077586], ['partial repair probe 2', [[2027, 7, 30], [2028, 9, 30], [2028, 5, 25], 0.05, 6], 4.103261], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2042, 4, 28], [2043, 1, 30], [2042, 4, 25], 0.0675, 3], 'settlement outside first period'], ['normal control 2', [[2044, 7, 14], [2044, 11, 30], [2044, 7, 11], 0.02, 12], 'settlement outside first period']], [['regression issue date clipping 1', [[2044, 7, 14], [2045, 2, 28], [2044, 10, 28], 0.02, 12], 0.579235], ['regression issue date clipping 2', [[2012, 3, 21], [2012, 4, 30], [2012, 4, 2], 0.05, 3], 0.164835], ['partial repair probe 1', [[2026, 5, 8], [2026, 8, 31], [2026, 5, 21], 0.02, 3], 0.070652], ['partial repair probe 2', [[2025, 3, 10], [2026, 2, 21], [2025, 8, 17], 0.08, 6], 3.535912], ['boundary control 1', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['boundary control 2', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['normal control 1', [[2035, 5, 29], [2035, 6, 6], [2035, 5, 26], 0.0675, 6], 'settlement outside first period'], ['normal control 2', [[2039, 12, 17], [2040, 7, 20], [2039, 12, 14], 0.0675, 3], 'settlement outside first period']], [['regression issue date clipping 1', [[2006, 4, 30], [2007, 1, 26], [2006, 10, 15], 0.03, 3], 1.377359], ['regression issue date clipping 2', [[2023, 8, 31], [2023, 10, 1], [2023, 9, 15], 0.03, 1], 0.124731], ['partial repair probe 1', [[2009, 5, 24], [2010, 7, 10], [2010, 5, 8], 0.0675, 6], 6.451657], ['partial repair probe 2', [[2018, 2, 9], [2018, 5, 31], [2018, 3, 13], 0.03, 3], 0.264312], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2002, 6, 12], [2003, 1, 5], [2002, 6, 9], 0.03, 6], 'settlement outside first period'], ['normal control 2', [[2036, 11, 9], [2036, 11, 19], [2036, 11, 6], 0.02, 6], 'settlement outside first period']], [['regression issue date clipping 1', [[2034, 5, 16], [2034, 6, 30], [2034, 6, 17], 0.05, 12], 0.438356], ['regression issue date clipping 2', [[2003, 5, 14], [2003, 5, 31], [2003, 5, 14], 0.045, 3], 0.0], ['partial repair probe 1', [[2032, 5, 30], [2032, 8, 31], [2032, 6, 4], 0.05, 1], 0.068996], ['partial repair probe 2', [[2021, 12, 10], [2022, 4, 30], [2022, 1, 18], 0.08, 3], 0.847826], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2010, 9, 22], [2011, 2, 14], [2010, 9, 19], 0.05, 3], 'settlement outside first period'], ['normal control 2', [[2021, 3, 4], [2021, 5, 30], [2021, 3, 1], 0.045, 3], 'settlement outside first period']], [['regression issue date clipping 1', [[2018, 9, 26], [2019, 1, 30], [2019, 1, 26], 0.08, 3], 2.652174], ['regression issue date clipping 2', [[2001, 4, 14], [2002, 7, 31], [2002, 1, 21], 0.08, 6], 6.169349], ['partial repair probe 1', [[2020, 8, 28], [2020, 10, 22], [2020, 9, 25], 0.0675, 1], 0.509879], ['partial repair probe 2', [[2041, 11, 21], [2044, 4, 12], [2042, 9, 9], 0.02, 12], 1.6], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2031, 4, 22], [2031, 4, 28], [2031, 4, 19], 0.0675, 3], 'settlement outside first period'], ['normal control 2', [[2014, 9, 23], [2015, 11, 30], [2014, 9, 20], 0.05, 12], 'settlement outside first period']]]\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":"f81c2fe9050e665ee16dbad4ecdd3aca0e3a9c331155775c19bb4205085c7349","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(issue, first, settle, rate, months):\n    def mlen(y, m):\n        if m == 2:\n            return 29 if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 else 28\n        return 30 if m in (4, 6, 9, 11) else 31\n    I = datetime.date(*issue)\n    Fc = datetime.date(*first)\n    S = datetime.date(*settle)\n    if not (I <= S <= Fc):\n        return 'settlement outside first period'\n    freq = 12 // months\n    def back(k):\n        t = Fc.year * 12 + Fc.month - 1 - k * months\n        y, m = t // 12, t % 12 + 1\n        return datetime.date(y, m, min(Fc.day, mlen(y, m)))\n    q = [Fc]\n    k = 1\n    while q[-1] > I:\n        q.append(back(k))\n        k += 1\n    frac = Fraction(0)\n    for j in range(len(q) - 1):\n        end, start = q[j], q[j + 1]\n        lo = start\n        hi = min(end, S)\n        if hi > lo:\n            frac += Fraction((hi - lo).days, (end - start).days)\n    return round(float(100 * Fraction(str(rate)) / freq * frac), 6)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression issue date clipping 1', [[2006, 8, 4], [2006, 9, 30], [2006, 8, 13], 0.05, 3], 0.122283], ['regression issue date clipping 2', [[2038, 5, 29], [2038, 7, 25], [2038, 7, 24], 0.045, 3], 0.692308], ['partial repair probe 1', [[2028, 3, 6], [2028, 4, 26], [2028, 3, 15], 0.03, 1], 0.077586], ['partial repair probe 2', [[2027, 7, 30], [2028, 9, 30], [2028, 5, 25], 0.05, 6], 4.103261], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2042, 4, 28], [2043, 1, 30], [2042, 4, 25], 0.0675, 3], 'settlement outside first period'], ['normal control 2', [[2044, 7, 14], [2044, 11, 30], [2044, 7, 11], 0.02, 12], 'settlement outside first period']], [['regression issue date clipping 1', [[2044, 7, 14], [2045, 2, 28], [2044, 10, 28], 0.02, 12], 0.579235], ['regression issue date clipping 2', [[2012, 3, 21], [2012, 4, 30], [2012, 4, 2], 0.05, 3], 0.164835], ['partial repair probe 1', [[2026, 5, 8], [2026, 8, 31], [2026, 5, 21], 0.02, 3], 0.070652], ['partial repair probe 2', [[2025, 3, 10], [2026, 2, 21], [2025, 8, 17], 0.08, 6], 3.535912], ['boundary control 1', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['boundary control 2', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['normal control 1', [[2035, 5, 29], [2035, 6, 6], [2035, 5, 26], 0.0675, 6], 'settlement outside first period'], ['normal control 2', [[2039, 12, 17], [2040, 7, 20], [2039, 12, 14], 0.0675, 3], 'settlement outside first period']], [['regression issue date clipping 1', [[2006, 4, 30], [2007, 1, 26], [2006, 10, 15], 0.03, 3], 1.377359], ['regression issue date clipping 2', [[2023, 8, 31], [2023, 10, 1], [2023, 9, 15], 0.03, 1], 0.124731], ['partial repair probe 1', [[2009, 5, 24], [2010, 7, 10], [2010, 5, 8], 0.0675, 6], 6.451657], ['partial repair probe 2', [[2018, 2, 9], [2018, 5, 31], [2018, 3, 13], 0.03, 3], 0.264312], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2002, 6, 12], [2003, 1, 5], [2002, 6, 9], 0.03, 6], 'settlement outside first period'], ['normal control 2', [[2036, 11, 9], [2036, 11, 19], [2036, 11, 6], 0.02, 6], 'settlement outside first period']], [['regression issue date clipping 1', [[2034, 5, 16], [2034, 6, 30], [2034, 6, 17], 0.05, 12], 0.438356], ['regression issue date clipping 2', [[2003, 5, 14], [2003, 5, 31], [2003, 5, 14], 0.045, 3], 0.0], ['partial repair probe 1', [[2032, 5, 30], [2032, 8, 31], [2032, 6, 4], 0.05, 1], 0.068996], ['partial repair probe 2', [[2021, 12, 10], [2022, 4, 30], [2022, 1, 18], 0.08, 3], 0.847826], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2010, 9, 22], [2011, 2, 14], [2010, 9, 19], 0.05, 3], 'settlement outside first period'], ['normal control 2', [[2021, 3, 4], [2021, 5, 30], [2021, 3, 1], 0.045, 3], 'settlement outside first period']], [['regression issue date clipping 1', [[2018, 9, 26], [2019, 1, 30], [2019, 1, 26], 0.08, 3], 2.652174], ['regression issue date clipping 2', [[2001, 4, 14], [2002, 7, 31], [2002, 1, 21], 0.08, 6], 6.169349], ['partial repair probe 1', [[2020, 8, 28], [2020, 10, 22], [2020, 9, 25], 0.0675, 1], 0.509879], ['partial repair probe 2', [[2041, 11, 21], [2044, 4, 12], [2042, 9, 9], 0.02, 12], 1.6], ['boundary control 1', [[2024, 1, 10], [2024, 9, 15], [2024, 9, 16], 0.05, 6], 'settlement outside first period'], ['boundary control 2', [[2024, 3, 15], [2024, 9, 15], [2024, 6, 15], 0.05, 6], 1.25], ['normal control 1', [[2031, 4, 22], [2031, 4, 28], [2031, 4, 19], 0.0675, 3], 'settlement outside first period'], ['normal control 2', [[2014, 9, 23], [2015, 11, 30], [2014, 9, 20], 0.05, 12], 'settlement outside first period']]]\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 toy contract stated explicitly in the contract field; no claim of conformance to any published convention text. 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-bond_day_count_conventions-long-first-coupon-quasi-issue-date-clipping","generated_at":"2026-09-29T14:46:51.437318+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bond accrual and pricing systems depend on exact day-count arithmetic; a single-day error changes settlement cash.","root_cause":"The accrual lower bound uses the quasi period start without clipping at the issue date.","sha256":"614a0a481eef93e5e6451b1080d6d62bd81a50e88f4c934c8da71df50996bb4b","title":"Irregular first coupon accrued by quasi-coupon periods: quasi periods are accrued from their start even before issue · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":47.427,"exit_code":1,"observations":[{"actual":0.122283,"check":"regression issue date clipping 1","expected":0.122283,"passed":true},{"actual":0.692308,"check":"regression issue date clipping 2","expected":0.692308,"passed":true},{"actual":0.155172,"check":"partial repair probe 1","expected":0.077586,"passed":false},{"actual":5.76087,"check":"partial repair probe 2","expected":4.103261,"passed":false},{"actual":"settlement outside first period","check":"boundary control 1","expected":"settlement outside first period","passed":true},{"actual":1.25,"check":"boundary control 2","expected":1.25,"passed":true},{"actual":"settlement outside first period","check":"normal control 1","expected":"settlement outside first period","passed":true},{"actual":"settlement outside first period","check":"normal control 2","expected":"settlement outside first period","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression issue date clipping 1\", \"actual\": 0.122283, \"expected\": 0.122283, \"passed\": true}, {\"check\": \"regression issue date clipping 2\", \"actual\": 0.692308, \"expected\": 0.692308, \"passed\": true}, {\"check\": \"partial repair probe 1\", \"actual\": 0.155172, \"expected\": 0.077586, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 5.76087, \"expected\": 4.103261, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 1.25, \"expected\": 1.25, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.37,"exit_code":1,"observations":[{"actual":0.597826,"check":"regression issue date clipping 1","expected":0.122283,"passed":false},{"actual":1.112637,"check":"regression issue date clipping 2","expected":0.692308,"passed":false},{"actual":0.155172,"check":"partial repair probe 1","expected":0.077586,"passed":false},{"actual":5.76087,"check":"partial repair probe 2","expected":4.103261,"passed":false},{"actual":"settlement outside first period","check":"boundary control 1","expected":"settlement outside first period","passed":true},{"actual":1.25,"check":"boundary control 2","expected":1.25,"passed":true},{"actual":"settlement outside first period","check":"normal control 1","expected":"settlement outside first period","passed":true},{"actual":"settlement outside first period","check":"normal control 2","expected":"settlement outside first period","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression issue date clipping 1\", \"actual\": 0.597826, \"expected\": 0.122283, \"passed\": false}, {\"check\": \"regression issue date clipping 2\", \"actual\": 1.112637, \"expected\": 0.692308, \"passed\": false}, {\"check\": \"partial repair probe 1\", \"actual\": 0.155172, \"expected\": 0.077586, \"passed\": false}, {\"check\": \"partial repair probe 2\", \"actual\": 5.76087, \"expected\": 4.103261, \"passed\": false}, {\"check\": \"boundary control 1\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}, {\"check\": \"boundary control 2\", \"actual\": 1.25, \"expected\": 1.25, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": \"settlement outside first period\", \"expected\": \"settlement outside first period\", \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}