From f990878fe6721d0395225903e3fe4f74e7d342e0 Mon Sep 17 00:00:00 2001 From: Ziming Date: Wed, 21 Oct 2026 16:30:42 -0400 Subject: [PATCH 1/8] Apply state Medicare Savings Program asset limits and income exclusions - Washington: no MSP asset test from 2023-01-01 (WSR 22-21-043). - California: $130,000 / $195,000 asset limit from 2022-07-01; asset test reinstated from 2026-01-01 (ACWDL 21-31, 22-25, 25-14, 25-27). - Minnesota: $10,000 / $18,000 asset limit, or the federal limit when higher (Minn. Stat. 256B.057 subd. 3). - Illinois $25 and Mississippi $50 general income exclusions in place of the SSI $20. Closes #10359 Co-Authored-By: Claude Opus 5.5 --- .../msp-state-asset-income-rules.fixed.md | 1 + .../eligibility/asset/applies.yaml | 16 ++++- .../eligibility/asset/state_limit/couple.yaml | 25 ++++++++ .../asset/state_limit/individual.yaml | 25 ++++++++ .../income/state_general_exclusion.yaml | 25 ++++++++ .../eligibility/msp_asset_eligible.yaml | 59 +++++++++++++++++++ .../income/msp_countable_income.yaml | 22 +++++++ .../eligibility/msp_asset_eligible.py | 9 ++- .../income/msp_countable_income.py | 14 +++++ 9 files changed, 192 insertions(+), 4 deletions(-) create mode 100644 changelog.d/msp-state-asset-income-rules.fixed.md create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml diff --git a/changelog.d/msp-state-asset-income-rules.fixed.md b/changelog.d/msp-state-asset-income-rules.fixed.md new file mode 100644 index 00000000000..01ccc68a011 --- /dev/null +++ b/changelog.d/msp-state-asset-income-rules.fixed.md @@ -0,0 +1 @@ +Applied state Medicare Savings Program rules: no asset test in Washington from 2023; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois and $50 in Mississippi. diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml index 8b833f9b4b4..292704b0d97 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml @@ -14,8 +14,17 @@ metadata: href: https://legislature.maine.gov/statutes/22/title22sec3174-LLL.html - title: MassHealth EOM 24-03, Medicare Savings Programs href: https://www.mass.gov/doc/eom-24-03-medicare-savings-programs-formerly-known-as-masshealth-senior-buy-in-and-masshealth-buy-in-programs-0/download -# Federal MSP rules apply the asset test by default; states that have -# eliminated it in current law are set to false from 2024. + - title: California DHCS All County Welfare Directors Letter 22-25, Elimination of Asset Limits for Non-MAGI Medi-Cal Programs + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/22-25.pdf#page=2 + - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 + - title: Washington State Register 22-21-043, amending WAC 182-517-0100 to remove Medicare Savings Program resource limits "#page 1-2" + href: https://lawfilesext.leg.wa.gov/law/wsrpdf/2022/21/22-21-043.pdf#page=1 + - title: Washington Administrative Code 182-517-0100(2)(d) - Federal Medicare savings programs + href: https://app.leg.wa.gov/wac/default.aspx?cite=182-517-0100 +# Federal MSP rules apply the asset test by default. States that have +# eliminated it are set to false from 2024 unless a state source gives +# another date. AL: 0000-01-01: true 2024-01-01: false @@ -31,6 +40,7 @@ AR: CA: 0000-01-01: true 2024-01-01: false + 2026-01-01: true CO: 0000-01-01: true 2024-01-01: true @@ -159,7 +169,7 @@ VA: 2024-01-01: true WA: 0000-01-01: true - 2024-01-01: true + 2023-01-01: false WV: 0000-01-01: true 2024-01-01: true diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml new file mode 100644 index 00000000000..1c65585e696 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml @@ -0,0 +1,25 @@ +description: States limit resources to this amount for a couple under the Medicare Savings Programs when it is higher than the federal limit. +metadata: + unit: currency-USD + period: year + label: MSP state couple asset limit + breakdown: + - state_code + reference: + - title: California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) "#page 2,4" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 + - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs "#page 2,8-9" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 + - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 + - title: Minnesota Statutes 256B.057, subdivision 3(a)(3) - Qualified Medicare beneficiaries + href: https://www.revisor.mn.gov/statutes/cite/256B.057 + - title: Laws of Minnesota 2000, chapter 488, article 9, section 15 + href: https://www.revisor.mn.gov/laws/2000/0/488/ + +CA: + 0000-01-01: 0 + 2022-07-01: 195_000 +MN: + 0000-01-01: 0 + 2000-10-01: 18_000 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml new file mode 100644 index 00000000000..1ffc67bfa66 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml @@ -0,0 +1,25 @@ +description: States limit resources to this amount for an individual under the Medicare Savings Programs when it is higher than the federal limit. +metadata: + unit: currency-USD + period: year + label: MSP state individual asset limit + breakdown: + - state_code + reference: + - title: California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) "#page 2,4" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 + - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs "#page 2,8-9" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 + - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 + - title: Minnesota Statutes 256B.057, subdivision 3(a)(3) - Qualified Medicare beneficiaries + href: https://www.revisor.mn.gov/statutes/cite/256B.057 + - title: Laws of Minnesota 2000, chapter 488, article 9, section 15 + href: https://www.revisor.mn.gov/laws/2000/0/488/ + +CA: + 0000-01-01: 0 + 2022-07-01: 130_000 +MN: + 0000-01-01: 0 + 2000-10-01: 10_000 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml new file mode 100644 index 00000000000..e3994e45301 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml @@ -0,0 +1,25 @@ +description: States exclude this amount of monthly income, in place of the Supplemental Security Income general income exclusion, under the Medicare Savings Programs. +metadata: + unit: currency-USD + period: month + label: MSP state general income exclusion + breakdown: + - state_code + reference: + - title: Illinois Department of Human Services Policy Manual PM 06-12-01-c - Income Exemption + href: https://www.dhs.state.il.us/page.aspx?item=14179 + - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - Income Disregard + href: https://www.dhs.state.il.us/page.aspx?item=16387 + - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Income + href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html + - title: 23 Mississippi Code of Rules 104-1.1(C)(2)(b) - Income Rules + href: https://www.law.cornell.edu/regulations/mississippi/23-Miss-Code-R-SS-104-1-1 + - title: Mississippi Division of Medicaid Eligibility Manual, pages 5400-5401, Countable Income (revised July 1, 1999) + href: https://web.archive.org/web/20140514175849/https://www.medicaid.ms.gov/wp-content/uploads/2014/03/Pages-5400-5401-Countable-Income.pdf#page=2 + +IL: + 0000-01-01: 0 + 1997-03-01: 25 +MS: + 0000-01-01: 0 + 1999-07-01: 50 diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml index 6114fffe57d..a9bafd0f700 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml @@ -103,3 +103,62 @@ state_code: MA output: msp_asset_eligible: true + +- name: Case 8, Washington has no MSP asset test from 2023. + period: 2023-01 + input: + age: 67 + bank_account_assets: 100_000 + spm_unit_is_married: false + state_code: WA + output: + msp_asset_eligible: true + +- name: Case 9, California's reinstated 2026 MSP asset limit admits assets at the limit. + period: 2026-01 + input: + age: 67 + bank_account_assets: 130_000 + spm_unit_is_married: false + state_code: CA + output: + msp_asset_eligible: true + +- name: Case 10, California's reinstated 2026 MSP asset limit rejects assets above it. + period: 2026-01 + input: + age: 67 + bank_account_assets: 130_001 + spm_unit_is_married: false + state_code: CA + output: + msp_asset_eligible: false + +- name: Case 11, Minnesota's couple asset limit is above the federal limit. + period: 2026-01 + input: + people: + person1: + age: 70 + bank_account_assets: 9_000 + person2: + age: 68 + bank_account_assets: 9_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: MN + output: + # Combined 18,000 is at Minnesota's 18,000 couple limit and above the + # federal 14,910. + msp_asset_eligible: [true, true] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml index 1c823197a3b..1c45f0dfd70 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml @@ -113,3 +113,25 @@ # (12,000 - 2,400 + 24,000 - 3,600) / 12 = 2,500 monthly. # Apply the couple's exclusions once: (2,500 - 20 - 65) / 2 = 1,207.50. msp_countable_income: [1_207.50, 1_207.50] + +- name: Case 6, Illinois exempts the first 25 dollars of income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + age: 70 + social_security_retirement: 12_000 + state_code: IL + output: + # 12,000 / 12 - 25 = 975. + msp_countable_income: 975 + +- name: Case 7, Mississippi raises the general income exclusion to 50 dollars. + period: 2026-01 + absolute_error_margin: 0.01 + input: + age: 70 + social_security_retirement: 12_000 + state_code: MS + output: + # 12,000 / 12 - 50 = 950. + msp_countable_income: 950 diff --git a/policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py b/policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py index b662caba728..98455cb905b 100644 --- a/policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py @@ -13,6 +13,7 @@ class msp_asset_eligible(Variable): "https://www.medicareinteractive.org/understanding-medicare/" "cost-saving-programs/medicare-savings-programs-qmb-slmb-qi/" "medicare-savings-program-income-and-asset-limits", + "https://www.law.cornell.edu/uscode/text/42/1396a#r_2", ) def formula(person, period, parameters): @@ -28,6 +29,12 @@ def formula(person, period, parameters): person.marital_unit.sum(personal_resources), personal_resources, ) - asset_limit = where(married, p.asset.couple, p.asset.individual) + # States may set a higher limit than the federal one, never a lower one. + state_limit = p.asset.state_limit + asset_limit = where( + married, + max_(p.asset.couple, state_limit.couple[state_code]), + max_(p.asset.individual, state_limit.individual[state_code]), + ) meets_asset_test = countable_resources <= asset_limit return where(asset_test_applies, meets_asset_test, True) diff --git a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py index 73a0ce26fb3..a4d4388677c 100644 --- a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py @@ -15,6 +15,7 @@ class msp_countable_income(Variable): "https://www.law.cornell.edu/cfr/text/20/416.1163", "https://secure.ssa.gov/apps10/poms.nsf/lnx/0501715010", "https://www.medicare.gov/basics/costs/help/medicare-savings-programs", + "https://www.law.cornell.edu/uscode/text/42/1396a#r_2", ) documentation = """ MSP countable income uses SSI methodology per 42 U.S.C. 1396d(p)(1)(B), @@ -29,6 +30,10 @@ class msp_countable_income(Variable): exclusions are applied, and the $20 exclusion is taken once on the combined income. The combined countable income is then compared against the couple FPL in the eligibility variables (is_qmb_eligible, is_slmb_eligible, is_qi_eligible). + + Under 42 U.S.C. 1396a(r)(2) a state may exclude more than the $20 SSI + general income exclusion; Illinois and Mississippi use their larger + exclusion in its place. """ def formula(person, period, parameters): @@ -46,6 +51,12 @@ def formula(person, period, parameters): 0, ) deeming_applies = person("is_ssi_spousal_deeming_applies", year) + state = person.household("state_code_str", period) + p = parameters(period).gov.hhs.medicare.savings_programs.eligibility.income + ssi_exclusions = parameters(period).gov.ssa.ssi.income.exclusions + general_exclusion = max_( + ssi_exclusions.general, p.state_general_exclusion[state] + ) spouse_earned_income = person( "ssi_earned_income_deemed_from_ineligible_spouse", year @@ -58,6 +69,7 @@ def formula(person, period, parameters): unearned_income, parameters, year, + general_exclusion=general_exclusion, ) couple_countable = _apply_ssi_exclusions( @@ -69,6 +81,7 @@ def formula(person, period, parameters): person.marital_unit.sum(unearned_income), parameters, year, + general_exclusion=general_exclusion, ) deemed_countable = _apply_ssi_exclusions( @@ -76,6 +89,7 @@ def formula(person, period, parameters): unearned_income + spouse_unearned_income, parameters, year, + general_exclusion=general_exclusion, ) single_countable = where( From 03b0eeffcfc07b0256e0a732bd7ec1e4ff31393e Mon Sep 17 00:00:00 2001 From: Ziming Date: Wed, 21 Oct 2026 16:45:48 -0400 Subject: [PATCH 2/8] Use the repository's multi-page reference title format Co-Authored-By: Claude Opus 5.5 --- .../medicare/savings_programs/eligibility/asset/applies.yaml | 2 +- .../eligibility/asset/state_limit/couple.yaml | 4 ++-- .../eligibility/asset/state_limit/individual.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml index 292704b0d97..a56b1da0d30 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml @@ -18,7 +18,7 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/22-25.pdf#page=2 - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 - - title: Washington State Register 22-21-043, amending WAC 182-517-0100 to remove Medicare Savings Program resource limits "#page 1-2" + - title: "Washington State Register 22-21-043, amending WAC 182-517-0100 to remove Medicare Savings Program resource limits #page 1-2" href: https://lawfilesext.leg.wa.gov/law/wsrpdf/2022/21/22-21-043.pdf#page=1 - title: Washington Administrative Code 182-517-0100(2)(d) - Federal Medicare savings programs href: https://app.leg.wa.gov/wac/default.aspx?cite=182-517-0100 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml index 1c65585e696..fe504f7ed6a 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml @@ -6,9 +6,9 @@ metadata: breakdown: - state_code reference: - - title: California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) "#page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs "#page 2,8-9" + - title: "California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs #page 2,8-9" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml index 1ffc67bfa66..936214043cf 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml @@ -6,9 +6,9 @@ metadata: breakdown: - state_code reference: - - title: California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) "#page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - - title: California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs "#page 2,8-9" + - title: "California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs #page 2,8-9" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 From e65ab54a502f8c35f34462820bb05ec4e357a4ea Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 16:49:57 -0400 Subject: [PATCH 3/8] Apply local review: Illinois $25 per spouse, date and limit tests, statute references - Illinois gives each applying spouse with income their own $25 exemption (PM 15-04-03-a, 89 Ill. Adm. Code 120.335(a)(1)); new by-state flag state_general_exclusion_per_spouse, used only in the couple path. - Tests pin Washington before 2023, California July 2022 and December 2025, California's couple limit, and Minnesota's individual and couple limits from above. - Cite Welf. & Inst. Code 14005.62, Laws of Washington 2022 ch. 297 and the official Mississippi rules; label the Illinois and Mississippi start dates as in-effect-by dates. Co-Authored-By: Claude Opus 5.5 --- .../msp-state-asset-income-rules.fixed.md | 2 +- .../eligibility/asset/applies.yaml | 4 + .../eligibility/asset/state_limit/couple.yaml | 6 +- .../asset/state_limit/individual.yaml | 6 +- .../income/state_general_exclusion.yaml | 18 ++- .../state_general_exclusion_per_spouse.yaml | 24 +++ .../eligibility/msp_asset_eligible.yaml | 142 ++++++++++++++++++ .../income/msp_countable_income.yaml | 89 +++++++++++ .../income/msp_countable_income.py | 19 ++- 9 files changed, 297 insertions(+), 13 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_per_spouse.yaml diff --git a/changelog.d/msp-state-asset-income-rules.fixed.md b/changelog.d/msp-state-asset-income-rules.fixed.md index 01ccc68a011..ba61f5fe5f7 100644 --- a/changelog.d/msp-state-asset-income-rules.fixed.md +++ b/changelog.d/msp-state-asset-income-rules.fixed.md @@ -1 +1 @@ -Applied state Medicare Savings Program rules: no asset test in Washington from 2023; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois and $50 in Mississippi. +Applied state Medicare Savings Program rules: no asset test in Washington from 2023; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois (one for each spouse with income) and $50 in Mississippi (once for a couple). diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml index a56b1da0d30..cd3711b1fd4 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml @@ -22,6 +22,10 @@ metadata: href: https://lawfilesext.leg.wa.gov/law/wsrpdf/2022/21/22-21-043.pdf#page=1 - title: Washington Administrative Code 182-517-0100(2)(d) - Federal Medicare savings programs href: https://app.leg.wa.gov/wac/default.aspx?cite=182-517-0100 + - title: "Laws of Washington 2022, chapter 297, sections 205(26) and 211(79) #page 274,312" + href: https://lawfilesext.leg.wa.gov/biennium/2021-22/Pdf/Bills/Session%20Laws/Senate/5693-S.SL.pdf#page=274 + - title: California Welfare and Institutions Code 14005.62(a), (c), (d) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.62 # Federal MSP rules apply the asset test by default. States that have # eliminated it are set to false from 2024 unless a state source gives # another date. diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml index fe504f7ed6a..ba50ca04278 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml @@ -12,10 +12,12 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 + - title: California Welfare and Institutions Code 14005.62(a), (c), (d) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.62 - title: Minnesota Statutes 256B.057, subdivision 3(a)(3) - Qualified Medicare beneficiaries - href: https://www.revisor.mn.gov/statutes/cite/256B.057 + href: https://www.revisor.mn.gov/statutes/cite/256B.057#stat.256B.057.3 - title: Laws of Minnesota 2000, chapter 488, article 9, section 15 - href: https://www.revisor.mn.gov/laws/2000/0/488/ + href: https://www.revisor.mn.gov/laws/2000/0/488/#a9 CA: 0000-01-01: 0 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml index 936214043cf..4952f821caa 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml @@ -12,10 +12,12 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 - title: California DHCS All County Welfare Directors Letter 25-27, 2026 Medicare Savings Program Property Limits href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-27.pdf#page=1 + - title: California Welfare and Institutions Code 14005.62(a), (c), (d) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.62 - title: Minnesota Statutes 256B.057, subdivision 3(a)(3) - Qualified Medicare beneficiaries - href: https://www.revisor.mn.gov/statutes/cite/256B.057 + href: https://www.revisor.mn.gov/statutes/cite/256B.057#stat.256B.057.3 - title: Laws of Minnesota 2000, chapter 488, article 9, section 15 - href: https://www.revisor.mn.gov/laws/2000/0/488/ + href: https://www.revisor.mn.gov/laws/2000/0/488/#a9 CA: 0000-01-01: 0 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml index e3994e45301..799d87852d4 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml @@ -8,18 +8,24 @@ metadata: reference: - title: Illinois Department of Human Services Policy Manual PM 06-12-01-c - Income Exemption href: https://www.dhs.state.il.us/page.aspx?item=14179 - - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - Income Disregard + - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - AABD Income Disregard (Community Cases) href: https://www.dhs.state.il.us/page.aspx?item=16387 - - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Income + - title: Illinois Department of Human Services Policy Manual PM 06-13-01-b - SLIB Income Limit + href: https://www.dhs.state.il.us/page.aspx?item=14218 + - title: Illinois Department of Human Services Policy Manual PM 06-14-01-b - QI-1 Income Limit + href: https://www.dhs.state.il.us/page.aspx?item=14250 + - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html - - title: 23 Mississippi Code of Rules 104-1.1(C)(2)(b) - Income Rules - href: https://www.law.cornell.edu/regulations/mississippi/23-Miss-Code-R-SS-104-1-1 - - title: Mississippi Division of Medicaid Eligibility Manual, pages 5400-5401, Countable Income (revised July 1, 1999) - href: https://web.archive.org/web/20140514175849/https://www.medicaid.ms.gov/wp-content/uploads/2014/03/Pages-5400-5401-Countable-Income.pdf#page=2 + - title: "23 Mississippi Administrative Code Part 104, Rules 1.1(C)(2)(b) and 4.2 - Income Rules and General Income Exclusion #page 9,21-22" + href: https://www.sos.ms.gov/adminsearch/ACCode/00000278c.pdf#page=9 + - title: Mississippi Division of Medicaid Eligibility Manual Volume III, Countable Income (revised July 1, 1999) + href: https://web.archive.org/web/20140514175849id_/https://www.medicaid.ms.gov/wp-content/uploads/2014/03/Pages-5400-5401-Countable-Income.pdf#page=2 IL: 0000-01-01: 0 + # PM 06-12-01-c revision date; the exemption is in effect no later than this. 1997-03-01: 25 MS: 0000-01-01: 0 + # Eligibility Manual p. 5401 sets the break-even point at FPL + 50 from this date. 1999-07-01: 50 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_per_spouse.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_per_spouse.yaml new file mode 100644 index 00000000000..b146dccf853 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_per_spouse.yaml @@ -0,0 +1,24 @@ +description: States apply the general income exclusion to each applying spouse's own income, instead of once to the couple's combined income, under the Medicare Savings Programs, if this is true. +metadata: + unit: bool + period: year + label: MSP state general income exclusion per spouse + breakdown: + - state_code + reference: + - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - AABD Income Disregard (Community Cases) + href: https://www.dhs.state.il.us/page.aspx?item=16387 + - title: Illinois Department of Human Services Policy Manual PM 06-12-01-c - Income Exemption + href: https://www.dhs.state.il.us/page.aspx?item=14179 + - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income + href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html + - title: 23 Mississippi Administrative Code Part 104, Rule 4.2(C)(2) - General Income Exclusion + href: https://www.sos.ms.gov/adminsearch/ACCode/00000278c.pdf#page=22 + +IL: + 0000-01-01: false + # PM 06-12-01-c revision date; the exemption is in effect no later than this. + 1997-03-01: true +MS: + # Rule 4.2(C)(2): one general exclusion for a couple's combined income. + 0000-01-01: false diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml index a9bafd0f700..46194ff3bf7 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml @@ -162,3 +162,145 @@ # Combined 18,000 is at Minnesota's 18,000 couple limit and above the # federal 14,910. msp_asset_eligible: [true, true] + +- name: Case 12, Washington applied the MSP asset test through December 2022. + period: 2022 + input: + age: 67 + bank_account_assets: 100_000 + spm_unit_is_married: false + state_code: WA + output: + # WSR 22-21-043 removed the resource test effective January 1, 2023. + msp_asset_eligible: + 2022-12: false + +- name: Case 13, California raised the MSP asset limit to 130,000 dollars in July 2022. + period: 2022 + input: + age: 67 + bank_account_assets: 100_000 + spm_unit_is_married: false + state_code: CA + output: + # Federal 2022 limit 8,400 through June; ACWDL 21-31 limit 130,000 from July 1, 2022. + msp_asset_eligible: + 2022-06: false + 2022-07: true + +- name: Case 14, California had no MSP asset test in December 2025. + period: 2025 + input: + age: 67 + bank_account_assets: 130_001 + spm_unit_is_married: false + state_code: CA + output: + # ACWDL 25-27: no MSP asset limit from January 1, 2024, through December 31, 2025. + msp_asset_eligible: + 2025-12: true + +- name: Case 15, California's 2026 couple MSP asset limit admits assets at the limit. + period: 2026-01 + input: + people: + person1: + age: 70 + bank_account_assets: 97_500 + person2: + age: 68 + bank_account_assets: 97_500 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + output: + # Combined 195,000 equals the ACWDL 25-14 two-person limit. + msp_asset_eligible: [true, true] + +- name: Case 16, California's 2026 couple MSP asset limit rejects assets above it. + period: 2026-01 + input: + people: + person1: + age: 70 + bank_account_assets: 97_500 + person2: + age: 68 + bank_account_assets: 97_501 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + output: + # Combined 195,001 exceeds the 195,000 two-person limit. + msp_asset_eligible: [false, false] + +- name: Case 17, Minnesota's individual MSP asset limit admits 10,000 dollars. + period: 2026-01 + input: + age: 67 + bank_account_assets: 10_000 + spm_unit_is_married: false + state_code: MN + output: + # Minn. Stat. 256B.057, subd. 3(a)(3): 10,000, above the federal 9,950. + msp_asset_eligible: true + +- name: Case 18, Minnesota's individual MSP asset limit rejects assets above 10,000 dollars. + period: 2026-01 + input: + age: 67 + bank_account_assets: 10_001 + spm_unit_is_married: false + state_code: MN + output: + msp_asset_eligible: false + +- name: Case 19, Minnesota's couple MSP asset limit rejects assets above 18,000 dollars. + period: 2026-01 + input: + people: + person1: + age: 70 + bank_account_assets: 9_000 + person2: + age: 68 + bank_account_assets: 9_001 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: MN + output: + # Combined 18,001 exceeds Minnesota's 18,000 couple limit. + msp_asset_eligible: [false, false] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml index 1c45f0dfd70..0edc2e14d15 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml @@ -135,3 +135,92 @@ output: # 12,000 / 12 - 50 = 950. msp_countable_income: 950 + +- name: Case 8, Illinois gives each Medicare spouse with income a 25 dollar exemption. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 13_200 + person2: + age: 70 + social_security_retirement: 8_880 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: both spouses apply and both have income, so two exemptions. + # (13,200 + 8,880) / 12 - 2 x 25 = 1,790. + msp_countable_income: [1_790, 1_790] + +- name: Case 9, Illinois allows one exemption when only one Medicare spouse has income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 13_200 + person2: + age: 70 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: one exemption if only one person has income. + # 13,200 / 12 - 25 = 1,075. + msp_countable_income: [1_075, 1_075] + +- name: Case 10, Mississippi applies one 50 dollar exclusion to a couple's combined income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 12_000 + person2: + age: 70 + social_security_retirement: 9_600 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: MS + output: + # 23 Miss. Admin. Code Part 104, Rule 4.2(C)(2): one general exclusion per couple. + # (12,000 + 9,600) / 12 - 50 = 1,750. + msp_countable_income: [1_750, 1_750] diff --git a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py index a4d4388677c..337fed4d11a 100644 --- a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py @@ -16,6 +16,7 @@ class msp_countable_income(Variable): "https://secure.ssa.gov/apps10/poms.nsf/lnx/0501715010", "https://www.medicare.gov/basics/costs/help/medicare-savings-programs", "https://www.law.cornell.edu/uscode/text/42/1396a#r_2", + "https://www.dhs.state.il.us/page.aspx?item=16387", ) documentation = """ MSP countable income uses SSI methodology per 42 U.S.C. 1396d(p)(1)(B), @@ -33,7 +34,9 @@ class msp_countable_income(Variable): Under 42 U.S.C. 1396a(r)(2) a state may exclude more than the $20 SSI general income exclusion; Illinois and Mississippi use their larger - exclusion in its place. + exclusion in its place. Mississippi takes it once from a couple's + combined income; Illinois gives each applying spouse with income their + own exclusion, up to that spouse's income. """ def formula(person, period, parameters): @@ -57,6 +60,18 @@ def formula(person, period, parameters): general_exclusion = max_( ssi_exclusions.general, p.state_general_exclusion[state] ) + # Illinois gives each applying spouse one exemption on their own + # non-SSI income (PM 15-04-03-a); SSI and Mississippi allow one per + # couple. + own_monthly_income = add( + person, period, ["ssi_earned_income", "ssi_unearned_income"] + ) + per_spouse = p.state_general_exclusion_per_spouse[state].astype(bool) + couple_general_exclusion = where( + per_spouse, + person.marital_unit.sum(min_(general_exclusion, own_monthly_income)), + general_exclusion, + ) spouse_earned_income = person( "ssi_earned_income_deemed_from_ineligible_spouse", year @@ -81,7 +96,7 @@ def formula(person, period, parameters): person.marital_unit.sum(unearned_income), parameters, year, - general_exclusion=general_exclusion, + general_exclusion=couple_general_exclusion, ) deemed_countable = _apply_ssi_exclusions( From af3e256ab5e30ec0c74265bb30330f669e943e56 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 20:50:30 -0400 Subject: [PATCH 4/8] Floor Illinois per-spouse income; end Mississippi's MSP asset test in 1999 - A spouse's own income for the Illinois $25 exemption floors earned and unearned income separately, so a self-employment loss earns no exemption and does not raise countable income. - Mississippi's MSP asset test ended 1999-07-01 (Eligibility Manual page 7220; 23 Miss. Code R. 103-1.8(A)(1)), not 2024. Co-Authored-By: Claude Opus 5.5 --- .../msp-state-asset-income-rules.fixed.md | 2 +- .../eligibility/asset/applies.yaml | 11 +++++-- .../eligibility/msp_asset_eligible.yaml | 14 +++++++++ .../income/msp_countable_income.yaml | 31 +++++++++++++++++++ .../income/msp_countable_income.py | 6 ++-- 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/changelog.d/msp-state-asset-income-rules.fixed.md b/changelog.d/msp-state-asset-income-rules.fixed.md index ba61f5fe5f7..db5bb08774a 100644 --- a/changelog.d/msp-state-asset-income-rules.fixed.md +++ b/changelog.d/msp-state-asset-income-rules.fixed.md @@ -1 +1 @@ -Applied state Medicare Savings Program rules: no asset test in Washington from 2023; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois (one for each spouse with income) and $50 in Mississippi (once for a couple). +Applied state Medicare Savings Program rules: no asset test in Washington from 2023 or in Mississippi from July 1999; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois (one for each spouse with income) and $50 in Mississippi (once for a couple). diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml index cd3711b1fd4..c9ef5e164df 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml @@ -22,13 +22,17 @@ metadata: href: https://lawfilesext.leg.wa.gov/law/wsrpdf/2022/21/22-21-043.pdf#page=1 - title: Washington Administrative Code 182-517-0100(2)(d) - Federal Medicare savings programs href: https://app.leg.wa.gov/wac/default.aspx?cite=182-517-0100 + - title: Mississippi Division of Medicaid Eligibility Manual Volume III, page 7220, Qualified Medicare Beneficiaries (revised July 1, 1999) + href: https://web.archive.org/web/20140514180548id_/https://www.medicaid.ms.gov/wp-content/uploads/2014/03/Pages-7220-7223-Qualified-Medicare-Beneficiaries.pdf#page=1 + - title: 23 Mississippi Administrative Code Part 103, Rule 1.8(A)(1) - Reduced Coverage Groups + href: https://www.law.cornell.edu/regulations/mississippi/23-Miss-Code-R-SS-103-1-8 - title: "Laws of Washington 2022, chapter 297, sections 205(26) and 211(79) #page 274,312" href: https://lawfilesext.leg.wa.gov/biennium/2021-22/Pdf/Bills/Session%20Laws/Senate/5693-S.SL.pdf#page=274 - title: California Welfare and Institutions Code 14005.62(a), (c), (d) href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.62 # Federal MSP rules apply the asset test by default. States that have -# eliminated it are set to false from 2024 unless a state source gives -# another date. +# eliminated it are set to false from 2024 where no state source dates the +# change; WA, CA and MS follow their own sources. AL: 0000-01-01: true 2024-01-01: false @@ -104,7 +108,8 @@ MN: 2024-01-01: true MS: 0000-01-01: true - 2024-01-01: false + # Eligibility Manual page 7220 (revised 07-01-99); 23 Miss. Code R. 103-1.8(A)(1). + 1999-07-01: false MO: 0000-01-01: true 2024-01-01: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml index 46194ff3bf7..287aa27dbb2 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml @@ -304,3 +304,17 @@ output: # Combined 18,001 exceeds Minnesota's 18,000 couple limit. msp_asset_eligible: [false, false] + +- name: Case 20, Mississippi ended the MSP asset test in July 1999. + period: 1999 + input: + age: 67 + bank_account_assets: 10_000 + spm_unit_is_married: false + state_code: MS + output: + # Eligibility Manual page 7220: "Effective 07-01-99, there will be no + # resource test." 10,000 is over the federal limit in June. + msp_asset_eligible: + 1999-06: false + 1999-07: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml index 0edc2e14d15..87084238dad 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml @@ -224,3 +224,34 @@ # 23 Miss. Admin. Code Part 104, Rule 4.2(C)(2): one general exclusion per couple. # (12,000 + 9,600) / 12 - 50 = 1,750. msp_countable_income: [1_750, 1_750] + +- name: Case 11, Illinois allows no exemption for a spouse whose only income is a self-employment loss. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 18_000 + person2: + age: 70 + self_employment_income_before_lsr: -6_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: only person1 has income other than SSI, so one $25. + # The loss neither earns an exemption nor offsets unearned income: + # 18,000 / 12 - 25 = 1,475. + msp_countable_income: [1_475, 1_475] diff --git a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py index 337fed4d11a..37e21548dac 100644 --- a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py @@ -63,8 +63,10 @@ def formula(person, period, parameters): # Illinois gives each applying spouse one exemption on their own # non-SSI income (PM 15-04-03-a); SSI and Mississippi allow one per # couple. - own_monthly_income = add( - person, period, ["ssi_earned_income", "ssi_unearned_income"] + # Floor each kind of income: a self-employment loss earns no exemption + # and does not offset unearned income. + own_monthly_income = max_(person("ssi_earned_income", period), 0) + max_( + person("ssi_unearned_income", period), 0 ) per_spouse = p.state_general_exclusion_per_spouse[state].astype(bool) couple_general_exclusion = where( From 84ad7b540afa5c64c74344b92673a99c5c4c690c Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 14:58:33 -0400 Subject: [PATCH 5/8] Exclude contributions from Illinois's MSP income exemption; add review tests Illinois's $25 exemption applies only to income other than SSI and contributions (PM 15-04-03-a; 89 Ill. Adm. Code 120.335(a)(1)), with the $20 SSI exclusion as the floor. Adds the deemed-spouse, per-spouse cap and Mississippi and California start-date cases, and fixes two reference titles. Co-Authored-By: Claude Opus 5.5 --- .../eligibility/asset/state_limit/couple.yaml | 2 +- .../asset/state_limit/individual.yaml | 2 +- .../income/contribution_sources.yaml | 16 +++ .../income/state_general_exclusion.yaml | 2 + ...eral_exclusion_excludes_contributions.yaml | 23 ++++ .../eligibility/msp_asset_eligible.yaml | 31 +++++ .../income/msp_countable_income.yaml | 129 ++++++++++++++++++ .../income/msp_countable_income.py | 41 ++++-- 8 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/contribution_sources.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml index ba50ca04278..287c32e9b49 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml @@ -6,7 +6,7 @@ metadata: breakdown: - state_code reference: - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs #page 2,4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs #page 2,8-9" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml index 4952f821caa..64d882e884b 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml @@ -6,7 +6,7 @@ metadata: breakdown: - state_code reference: - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs #page 2,4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "California DHCS All County Welfare Directors Letter 25-14, Reinstatement of Asset Limits for Non-MAGI Medi-Cal Programs #page 2,8-9" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf#page=2 diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/contribution_sources.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/contribution_sources.yaml new file mode 100644 index 00000000000..fc7d5e8acbe --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/contribution_sources.yaml @@ -0,0 +1,16 @@ +description: The Medicare Savings Programs treat these income sources as contributions, which are income from a person outside the medical unit, when a state excludes contributions from its general income exclusion. +values: + # Same start as the SSI unearned income source list these come from. + 1975-01-01: + - alimony_income + - child_support_received + - financial_assistance +metadata: + unit: list + period: year + label: MSP contribution income sources + reference: + - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - AABD Income Disregard (Community Cases) + href: https://www.dhs.state.il.us/page.aspx?item=16387 + - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income + href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml index 799d87852d4..9c3bf26443b 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml @@ -10,6 +10,8 @@ metadata: href: https://www.dhs.state.il.us/page.aspx?item=14179 - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - AABD Income Disregard (Community Cases) href: https://www.dhs.state.il.us/page.aspx?item=16387 + - title: Illinois Department of Human Services Policy Manual PM 15-05-03 - AABD Community + href: https://www.dhs.state.il.us/page.aspx?item=16446 - title: Illinois Department of Human Services Policy Manual PM 06-13-01-b - SLIB Income Limit href: https://www.dhs.state.il.us/page.aspx?item=14218 - title: Illinois Department of Human Services Policy Manual PM 06-14-01-b - QI-1 Income Limit diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml new file mode 100644 index 00000000000..6c182b27698 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml @@ -0,0 +1,23 @@ +description: States exclude contributions from the income that the state general income exclusion applies to under the Medicare Savings Programs, if this is true. +metadata: + unit: bool + period: year + label: MSP state general income exclusion excludes contributions + breakdown: + - state_code + reference: + - title: Illinois Department of Human Services Policy Manual PM 15-04-03-a - AABD Income Disregard (Community Cases) + href: https://www.dhs.state.il.us/page.aspx?item=16387 + - title: Illinois Department of Human Services Policy Manual PM 06-12-01-b - QMB Income Limit + href: https://www.dhs.state.il.us/page.aspx?item=14177 + - title: Illinois Department of Human Services Policy Manual PM 15-05-03 - AABD Community + href: https://www.dhs.state.il.us/page.aspx?item=16446 + - title: 89 Illinois Administrative Code 120.74 - Qualified Medicare Beneficiary (QMB) Income Standard + href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200D00740R.html + - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income + href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html + +IL: + 0000-01-01: false + # Same start as state_general_exclusion. + 1997-03-01: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml index 287aa27dbb2..8d1555c36b1 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.yaml @@ -318,3 +318,34 @@ msp_asset_eligible: 1999-06: false 1999-07: true + +- name: Case 21, California's couple MSP asset limit starts in July 2022. + period: 2022 + input: + people: + person1: + age: 70 + bank_account_assets: 75_000 + person2: + age: 68 + bank_account_assets: 75_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + output: + # Federal 2022 couple limit 12,600 through June; ACWDL 21-31 limit 195,000 + # from July 1, 2022. + msp_asset_eligible: + 2022-06: [false, false] + 2022-07: [true, true] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml index 87084238dad..8ec1679488b 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml @@ -255,3 +255,132 @@ # The loss neither earns an exemption nor offsets unearned income: # 18,000 / 12 - 25 = 1,475. msp_countable_income: [1_475, 1_475] + +- name: Case 12, Illinois allows no exemption for a spouse whose only income is a contribution. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 15_600 + person2: + age: 70 + alimony_income: 6_480 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: a contribution (alimony) earns no exemption, so one $25. + # (15,600 + 6,480) / 12 - 25 = 1,815, above the 1,803.33 QMB couple limit. + msp_countable_income: [1_815, 1_815] + is_qmb_eligible: [false, false] + +- name: Case 13, Illinois single person whose only income is a contribution keeps the SSI 20 dollar floor. + period: 2026-01 + absolute_error_margin: 0.01 + input: + age: 70 + alimony_income: 12_000 + state_code: IL + output: + # 89 Ill. Adm. Code 120.335(a)(1): no $25 on contributions. + # 42 U.S.C. 1396a(r)(2) keeps the SSI $20: 12,000 / 12 - 20 = 980. + msp_countable_income: 980 + +- name: Case 14, Illinois exemption on Social Security is unchanged when the person also has alimony. + period: 2026-01 + absolute_error_margin: 0.01 + input: + age: 70 + social_security_retirement: 6_000 + alimony_income: 6_000 + state_code: IL + output: + # 500 + 500 = 1,000; Social Security alone exceeds $25: 1,000 - 25 = 975. + msp_countable_income: 975 + +- name: Case 15, Illinois applies one 25 dollar exemption when income is deemed from an ineligible spouse. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + social_security_retirement: 7_200 + person2: + age: 50 + employment_income: 30_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: one applicant, so one $25. Deemed: unearned 600 - 25 = 575; + # earned (2,500 - 65) / 2 = 1,217.50; 575 + 1,217.50 = 1,792.50. + # The spouse without Medicare: (2,500 - 25 - 65) / 2 = 1,205. + msp_countable_income: [1_792.5, 1_205] + +- name: Case 16, Illinois caps a spouse's 25 dollar exemption at that spouse's income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + social_security_retirement: 13_200 + person2: + age: 70 + interest_income: 120 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: "If total income is less than $25, exempt the actual amount." + # (13,200 + 120) / 12 = 1,110; exemptions 25 + 10 = 35; 1,110 - 35 = 1,075. + msp_countable_income: [1_075, 1_075] + +- name: Case 17, Mississippi's 50 dollar exclusion starts in July 1999. + period: 1999 + absolute_error_margin: 0.01 + input: + age: 70 + social_security_retirement: 6_000 + state_code: MS + output: + # 500 - 20 = 480 in June; 500 - 50 = 450 from July. + msp_countable_income: + 1999-06: 480 + 1999-07: 450 diff --git a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py index 37e21548dac..99b10f12989 100644 --- a/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py @@ -17,6 +17,7 @@ class msp_countable_income(Variable): "https://www.medicare.gov/basics/costs/help/medicare-savings-programs", "https://www.law.cornell.edu/uscode/text/42/1396a#r_2", "https://www.dhs.state.il.us/page.aspx?item=16387", + "https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html", ) documentation = """ MSP countable income uses SSI methodology per 42 U.S.C. 1396d(p)(1)(B), @@ -36,7 +37,9 @@ class msp_countable_income(Variable): general income exclusion; Illinois and Mississippi use their larger exclusion in its place. Mississippi takes it once from a couple's combined income; Illinois gives each applying spouse with income their - own exclusion, up to that spouse's income. + own exclusion, up to that spouse's income. Illinois gives its $25 only on + income other than SSI and contributions (alimony, child support, outside + cash help); the $20 SSI exclusion stays the floor. """ def formula(person, period, parameters): @@ -56,22 +59,40 @@ def formula(person, period, parameters): deeming_applies = person("is_ssi_spousal_deeming_applies", year) state = person.household("state_code_str", period) p = parameters(period).gov.hhs.medicare.savings_programs.eligibility.income - ssi_exclusions = parameters(period).gov.ssa.ssi.income.exclusions - general_exclusion = max_( - ssi_exclusions.general, p.state_general_exclusion[state] - ) - # Illinois gives each applying spouse one exemption on their own - # non-SSI income (PM 15-04-03-a); SSI and Mississippi allow one per - # couple. + ssi_general = parameters(period).gov.ssa.ssi.income.exclusions.general + state_exclusion = p.state_general_exclusion[state] + general_exclusion = max_(ssi_general, state_exclusion) + # Illinois exempts the first $25 of income other than SSI and + # contributions such as alimony and child support, and gives each + # applying spouse their own exemption (PM 15-04-03-a; 89 Ill. Adm. + # Code 120.335(a)(1)); SSI and Mississippi allow one per couple. # Floor each kind of income: a self-employment loss earns no exemption # and does not offset unearned income. own_monthly_income = max_(person("ssi_earned_income", period), 0) + max_( person("ssi_unearned_income", period), 0 ) + excludes_contributions = p.state_general_exclusion_excludes_contributions[ + state + ].astype(bool) + contributions = add(person, period, p.contribution_sources) + qualifying_income = where( + excludes_contributions, + max_(own_monthly_income - contributions, 0), + own_monthly_income, + ) + # The SSI general exclusion stays the floor (42 U.S.C. 1396a(r)(2)). + own_general_exclusion = where( + excludes_contributions, + max_(ssi_general, min_(state_exclusion, qualifying_income)), + general_exclusion, + ) per_spouse = p.state_general_exclusion_per_spouse[state].astype(bool) couple_general_exclusion = where( per_spouse, - person.marital_unit.sum(min_(general_exclusion, own_monthly_income)), + max_( + ssi_general, + person.marital_unit.sum(min_(state_exclusion, qualifying_income)), + ), general_exclusion, ) @@ -86,7 +107,7 @@ def formula(person, period, parameters): unearned_income, parameters, year, - general_exclusion=general_exclusion, + general_exclusion=own_general_exclusion, ) couple_countable = _apply_ssi_exclusions( From be43df1b6d7006b6c5f66869f45e399efa5db61e Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 14:59:35 -0400 Subject: [PATCH 6/8] Record Illinois MSP contributions candidate; update changelog Co-Authored-By: Claude Opus 5.5 --- .../msp-state-asset-income-rules.fixed.md | 2 +- source_conflicts/candidates.yaml | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/changelog.d/msp-state-asset-income-rules.fixed.md b/changelog.d/msp-state-asset-income-rules.fixed.md index db5bb08774a..a82c0692342 100644 --- a/changelog.d/msp-state-asset-income-rules.fixed.md +++ b/changelog.d/msp-state-asset-income-rules.fixed.md @@ -1 +1 @@ -Applied state Medicare Savings Program rules: no asset test in Washington from 2023 or in Mississippi from July 1999; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois (one for each spouse with income) and $50 in Mississippi (once for a couple). +Applied state Medicare Savings Program rules: no asset test in Washington from 2023 or in Mississippi from July 1999; California asset limits of $130,000 / $195,000 (July 2022 to 2023, and again from 2026); Minnesota asset limits of $10,000 / $18,000; and general income exclusions of $25 in Illinois (one for each spouse with income other than SSI and contributions such as alimony and child support) and $50 in Mississippi (once for a couple). diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index e06355446bb..5047cc53d16 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2191,6 +2191,43 @@ candidates: state: ruled note: Ruled statute-first in October 2026; verify the incorporated dependency bar and annual questionnaire routing, including the 2026 draft. +- id: us-il:msp-income-exemption-contributions + program: medicare-savings-programs + years: + from: 2026 + type: calendar + question: Does Illinois's $25 income exemption for QMB, SLIB and QI-1 apply to contributions such as alimony and + child support? + sources: + - kind: regulation + citation: 89 Ill. Adm. Code 120.335(a)(1); 120.74 (QMB countable income under Parts 112, 113 and 120) + url: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html + - kind: manual + citation: IDHS Policy Manual PM 15-04-03-a, reached from PM 06-12-01-b through PM 15-05-03 + url: https://www.dhs.state.il.us/page.aspx?item=16387 + - kind: manual + citation: IDHS Policy Manual PM 06-12-01-c + url: https://www.dhs.state.il.us/page.aspx?item=14179 + readings: + statute: No statute is supplied; the regulation exempts the first $25 of income other than SSI income or contributions + from a spouse or other individual, and PM 15-04-03-a exempts income other than SSI income and contributions. + other: PM 06-12-01-c exempts the first $25 of earned or unearned income other than SSI income and names no + exception for contributions. + example: An Illinois QMB applicant whose only income is $1,000 a month of alimony counts $980 under the regulation, + which leaves the $20 SSI exclusion, and $975 under PM 06-12-01-c. + pe_us: + follows: unknown + code: + - policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py + - policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml + - policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/contribution_sources.yaml + prs: + - https://github.com/PolicyEngine/policyengine-us/pull/10360 + state: unreviewed + note: 'PE-US follows the regulation and PM 15-04-03-a: Illinois''s $25 applies only to income other than SSI and contributions + (alimony, child support and outside cash help), and the $20 SSI exclusion stays the floor (msp_countable_income.py, + state_general_exclusion_excludes_contributions.yaml, contribution_sources.yaml). Verify whether PM 06-12-01-c''s + silence on contributions reflects QMB policy.' - id: us-il:personal-exemption-claimed-vs-claimable program: income-tax years: From 7291aa771386606c03e87ce736fd07007da6350a Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 17:17:00 -0400 Subject: [PATCH 7/8] Add Mississippi to the MSP contributions-exclusion parameter Mississippi's general exclusion applies to all of the applicant's own income (23 Miss. Admin. Code Part 104, Rule 4.2(C)(1)), so it does not exclude contributions. Listing it also satisfies the guard against single-member breakdown parameters. Results are unchanged. Co-Authored-By: Claude Opus 5.5 --- .../state_general_exclusion_excludes_contributions.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml index 6c182b27698..3c8cf26fe38 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml @@ -16,8 +16,14 @@ metadata: href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200D00740R.html - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html + - title: 23 Mississippi Administrative Code Part 104, Rule 4.2(C)(1) - General Income Exclusion + href: https://www.sos.ms.gov/adminsearch/ACCode/00000278c.pdf#page=22 IL: 0000-01-01: false # Same start as state_general_exclusion. 1997-03-01: true +MS: + # Rule 4.2(C)(1): the exclusion applies to the applicant's own income, + # contributions included. + 0000-01-01: false From 5bb5a500e08a2716468dc24bed0a80f324e9316d Mon Sep 17 00:00:00 2001 From: Ziming Date: Thu, 29 Oct 2026 13:38:26 -0400 Subject: [PATCH 8/8] Test the Illinois couple $20 floor; cite Mississippi Rule 4.2(C)(5) Co-Authored-By: Claude Opus 5.5 --- ...eral_exclusion_excludes_contributions.yaml | 6 +-- .../income/msp_countable_income.yaml | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml index 3c8cf26fe38..942064352e1 100644 --- a/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml @@ -16,7 +16,7 @@ metadata: href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200D00740R.html - title: 89 Illinois Administrative Code 120.335(a)(1) - Exempt Unearned Income href: https://www.ilga.gov/ftp/JCAR/AdminCode/089/089001200H03350R.html - - title: 23 Mississippi Administrative Code Part 104, Rule 4.2(C)(1) - General Income Exclusion + - title: "23 Mississippi Administrative Code Part 104, Rule 4.2(C)(1) and (C)(5) - General Income Exclusion #page 22-23" href: https://www.sos.ms.gov/adminsearch/ACCode/00000278c.pdf#page=22 IL: @@ -24,6 +24,6 @@ IL: # Same start as state_general_exclusion. 1997-03-01: true MS: - # Rule 4.2(C)(1): the exclusion applies to the applicant's own income, - # contributions included. + # Rule 4.2(C)(5) withholds the exclusion only from income based on need, + # so alimony and other contributions keep it. 0000-01-01: false diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml index 8ec1679488b..df9c65a5611 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_countable_income.yaml @@ -384,3 +384,46 @@ msp_countable_income: 1999-06: 480 1999-07: 450 + +- name: Case 18, Illinois couple whose exemptions total less than 20 dollars keeps the SSI 20 dollar floor. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 72 + alimony_income: 12_000 + person2: + age: 70 + interest_income: 120 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: IL + output: + # PM 15-04-03-a: alimony earns no exemption; the $10 of interest earns $10. + # 42 U.S.C. 1396a(r)(2) keeps the SSI $20 for the couple: + # (12,000 + 120) / 12 = 1,010; 1,010 - 20 = 990. + msp_countable_income: [990, 990] + +- name: Case 19, Mississippi applies its 50 dollar exclusion to alimony. + period: 2026-01 + absolute_error_margin: 0.01 + input: + age: 70 + alimony_income: 12_000 + state_code: MS + output: + # Rule 4.2(C)(5) withholds the exclusion only from income based on need: + # 12,000 / 12 - 50 = 950. + msp_countable_income: 950