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..a82c0692342 --- /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 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/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..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 @@ -14,8 +14,25 @@ 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 + - 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 where no state source dates the +# change; WA, CA and MS follow their own sources. AL: 0000-01-01: true 2024-01-01: false @@ -31,6 +48,7 @@ AR: CA: 0000-01-01: true 2024-01-01: false + 2026-01-01: true CO: 0000-01-01: true 2024-01-01: true @@ -90,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 @@ -159,7 +178,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..287c32e9b49 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/couple.yaml @@ -0,0 +1,27 @@ +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, 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 + - 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#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/#a9 + +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..64d882e884b --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/state_limit/individual.yaml @@ -0,0 +1,27 @@ +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, 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 + - 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#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/#a9 + +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/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 new file mode 100644 index 00000000000..9c3bf26443b --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion.yaml @@ -0,0 +1,33 @@ +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 - 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 + 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 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_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..942064352e1 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/state_general_exclusion_excludes_contributions.yaml @@ -0,0 +1,29 @@ +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 + - 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: + 0000-01-01: false + # Same start as state_general_exclusion. + 1997-03-01: true +MS: + # 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/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 6114fffe57d..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 @@ -103,3 +103,249 @@ 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] + +- 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] + +- 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 + +- 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 1c823197a3b..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 @@ -113,3 +113,317 @@ # (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 + +- 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] + +- 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] + +- 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 + +- 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 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..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 @@ -15,6 +15,9 @@ 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", + "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), @@ -29,6 +32,14 @@ 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. 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. 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): @@ -46,6 +57,44 @@ 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_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, + max_( + ssi_general, + person.marital_unit.sum(min_(state_exclusion, qualifying_income)), + ), + general_exclusion, + ) spouse_earned_income = person( "ssi_earned_income_deemed_from_ineligible_spouse", year @@ -58,6 +107,7 @@ def formula(person, period, parameters): unearned_income, parameters, year, + general_exclusion=own_general_exclusion, ) couple_countable = _apply_ssi_exclusions( @@ -69,6 +119,7 @@ def formula(person, period, parameters): person.marital_unit.sum(unearned_income), parameters, year, + general_exclusion=couple_general_exclusion, ) deemed_countable = _apply_ssi_exclusions( @@ -76,6 +127,7 @@ def formula(person, period, parameters): unearned_income + spouse_unearned_income, parameters, year, + general_exclusion=general_exclusion, ) single_countable = where( diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 37bfa3cd0f5..2b68e174164 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2623,6 +2623,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: