Calculation catalog › Social Security

Survivor scenario row ssa44premium savings

For one death timing, Medicare premiums over the whole projection without SSA-44 survivor relief minus with it (nominal dollars summed across years): the two relief years plus any later knock-on, the relief-year part published beside it.

Field: SSA-44 survivor premium difference Unit: US dollars Basis: nominal dollars Computed by: UI-native Status: Complete chain

Appears in: survivor-page (IRMAA relief (SSA-44) cell "$X", with the relief years' tier changes and ", including $Y in later years")

Calculation records

  • SSA-44 survivor premium difference Formula record, justified by derivation

    Purpose: Show, for one death timing, what Medicare premiums SSA-44 survivor relief saves over the whole projection, and how much of that falls in the two relief years.

    Statement: projection/survivorTransition.ts#survivorTransitionAnalysis runs each death timing with SSA-44 survivor relief switched off and on (#withSurvivorSsa44: expenses.healthcare.ssa44.survivorYears, the retirement-years setting kept) and #ssa44PremiumDifference publishes ssa44PremiumSavings, the sum over every year of the run without relief (that the other run also has) of medicarePremiums without minus with, and ssa44ReliefYearSavings, the same sum over the death year + 1 and + 2 only. The relief years' MAGI is selected by the ledger's irmaa-lookback-selection. Units: nominal dollars summed across years. Rounding: none; the page prints whole dollars.

    Formula: total = sum_y (premiums_off(y) - premiums_on(y)); relief = sum over y in {death year + 1, death year + 2} of the same

    • premiums_off(y), premiums_on(y): YearResult.medicarePremiums of the run without and with SSA-44 survivor relief (unit: nominal USD) (domain: nonnegative)

    Timing: every projection year of the two runs

    Rounding: none

    Limits:

    • Two runs of the whole ledger: the total carries the later years' knock-on (lower premiums leave more money, which changes later withdrawals, MAGI and tiers), and the relief-year part is published beside it; the page says "no surcharge to relieve" only when the relief-year part is at most 50 cents
    • Nominal dollars of different years summed
    • The first relief year still looks back to the joint death year, as irmaa-lookback-selection states

    Provenance: derived by claude, implemented by claude.

    Independent review: codex

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: survivor-ssa44-premium-difference.md Mutation receipt: survivor-ssa44-premium-difference.mutation.md

    Evidence tests: survivorTransition.ssa44.evidence.test.ts

    Implemented in: survivorTransition.ts

    Is the number of: survivor-scenario-row-ssa44premium-savings

Records that feed this number

  • IRMAA lookback MAGI selection Model record, justified by derivation

    Purpose: Choose which calendar year's MAGI, and from which source, prices a premium year's IRMAA.

    Statement: projection/internal/annualHealthcareExpenses.ts#annualHealthcareExpenses resolves premium-year IRMAA MAGI from year minus two, except that an active SSA-44 life-changing event selects year minus one only when it is strictly lower; a tie retains year minus two and its source. For lookback years before the projection ledger, projection/simulate.ts#simulatePlan resolves them through its own resolveMagiFor closure, which falls back to the plan's matching historicalAnnualMagiByYear entry, then to its coarse recentAnnualMagi stand-in, and publishes which arm supplied the figure. Units: calendar years, nominal USD and a source enum. Rounding: none; the selection performs no numerical approximation.

    Formula: primary = resolveMagiFor(y - 2); selected = ssa44(y) and resolveMagiFor(y - 1).magi < primary.magi ? resolveMagiFor(y - 1) : primary

    • y: Premium year being priced (unit: year) (domain: integer)
    • primary.magi: Ledger or fallback MAGI for year minus two (unit: usd/year) (domain: nonnegative)
    • ssa44(y): Whether an SSA-44 life-changing event is active in y (unit: boolean) (domain: true or false)

    Timing: once per premium year

    Rounding: none

    Limits:

    • The comparison is strictly lower, so equal MAGIs keep the ordinary two-year year; reading it as always selecting year minus one under SSA-44 changes the tie case
    • The planFallback arm is the coarse recentAnnualMagi stand-in, published as evidence of which arm answered rather than as evidence of the household's income
    • The selection is asserted two ways: the three SSA-44 branches through annualHealthcareExpenses with resolveMagiFor supplied at its documented injection point, and the two first-year fallback arms through a real simulatePlan run that publishes irmaaLookbackMagi, its source and its year. The fallback resolver is a closure inside simulatePlan rather than a module-scope symbol, so the pin names the exported function that owns it

    Provenance: derived by codex, implemented by claude.

    Independent review: grok

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: irmaa-lookback-selection.md Mutation receipt: irmaa-lookback-selection.mutation.md

    Evidence tests: annualHealthcareExpenses.evidence.test.ts

    Implemented in: annualHealthcareExpenses.ts; simulate.ts

    Feeds: irmaa-surcharge-annual, medicare-premiums-annual, survivor-scenario-row-ssa44premium-savings

Transformations

  • projection/survivorTransition.ts#survivorTransitionAnalysis: ssa44PremiumSavings = Σ over every projection year of medicarePremiums without relief − with it (the plan with ssa44.survivorYears forced off and on, same death override); ssa44ReliefYearSavings is the same sum over the death year + 1 and + 2 only. The page prints the whole sum, names the later-year part when it is at least $1, and says "no surcharge to relieve" exactly when the relief-year part is at most $0.50.

The evidence links on this page (each record's worksheet, mutation receipt, evidence tests and implementation, and the source links) are pinned to engine commit 2624dbdba9fd, committed 2026-10-11. The live calculation index and output-family census links point at the repository's main branch, so you can check this snapshot against them.