Repository navigation
Deduct Montana's 2021–2023 medical and long-term care insurance premiums in full (Itemized Deductions Schedule lines 2–3) - #9947
Merged
Conversation
…eturn's Montana AGI The 2021-2023 Form 2 Itemized Deductions Schedule (line 1b) and Standard Deduction Worksheet (line 1) take Montana AGI from page 1, line 14. Single, head of household and joint returns report that line in one column, so a joint return pools both spouses' income before flooring at zero. Both joint-path variables instead summed each spouse's mt_agi_indiv, which floors each spouse at zero first, so a spouse's loss never offset the other's income. They now use mt_agi_joint. From 2024 mt_agi_indiv is switched off (Montana repealed filing separately on the same form), so the joint medical floor fell to zero and the full medical expense was deducted. From 2024 Form 2 line 2 takes federal itemized deductions (Worksheet A), so the variable now carries the federal medical expense deduction (7.5% of federal AGI). A new parameter, gov.states.mt.tax.income.deductions.itemized.state_specific_deduction_applies, marks the switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s in full For TY2021-2023 the Form 2 Itemized Deductions Schedule floors only line 1, medical and dental expenses other than premiums, at 7.5% of Montana AGI. Line 2 deducts medical insurance premiums in full, except premiums already deducted in Montana AGI (the self-employed health insurance deduction) and pre-tax premiums; line 3 deducts long-term care insurance premiums in full (former MCA 15-30-2131(1)(a)(iii)-(iv) and (1)(g)). - New mt_eligible_medical_insurance_premiums (person): federal medical expense premiums, including Medicare Part B, less the person's self-employed health insurance deduction. - mt_medical_expense_deduction_joint (2021-2023) and _indiv: line 1 floored on Montana AGI, plus lines 2 and 3 in full. From 2024 the joint variant keeps the federal medical expense deduction. Fixes #9930. Stacked on #9903. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 6, 2026
The 2021-2023 property now expects max(0, other expenses - 7.5% of Montana AGI) plus line 2 and 3 premiums. The grid's age-70 single filers carry modeled Medicare Part B premiums, which the schedule deducts in full. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iums-in-full # Conflicts: # policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_joint.yaml # policyengine_us/tests/unit/test_mt_joint_agi_deductions_properties.py # policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/medical/mt_medical_expense_deduction_joint.py
…nto fix-mt-medical-premiums-in-full # Conflicts: # policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_indiv.yaml # policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_joint.yaml # policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/medical/mt_medical_expense_deduction_indiv.py
- Line 2 reuses #10055's per-person excluded premiums; the new line 3 variable nets the remainder of the self-employed deduction from long-term care premiums (26 U.S.C. 162(l)(2)(C) lets those premiums into that deduction). - The separate-filing variant applies lines 2 and 3 only while the Itemized Deductions Schedule applies; a reform that allows separate filing after 2023 keeps premiums under the floor. - Tests: supply the self-employed deduction where its earnings limit matters, a below-floor dependent case, #10055's Montana cases moved to lines 1-3, and invariants for premium conservation and #10055's applied exclusion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iums-in-full # Conflicts: # policyengine_us/tests/core/test_medical_expense_premium_conservation.py # policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/deductions/itemized/ar_medical_expense_deduction_joint.yaml # policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_indiv.yaml # policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/deductions/itemized/mt_medical_expense_deduction_joint.yaml # policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml # policyengine_us/tests/policy/baseline/gov/states/nd/tax/property/renters_refund/nd_renters_refund_income.yaml # policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/deductions/nj_medical_expense_deduction.yaml # policyengine_us/tests/policy/baseline/gov/states/nm/tax/income/credits/nm_medical_expense_credit.yaml # policyengine_us/tests/policy/baseline/gov/states/nm/tax/income/exemptions/nm_medical_expense_exemption.yaml # policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/medical/mt_medical_expense_deduction_indiv.py # policyengine_us/variables/gov/states/nd/tax/property/renters_refund/nd_renters_refund_income.py # policyengine_us/variables/gov/states/nj/tax/income/deductions/nj_medical_expense_deduction.py # policyengine_us/variables/gov/states/nm/tax/income/credits/nm_medical_expense_credit.py # policyengine_us/variables/gov/states/nm/tax/income/exemptions/nm_medical_expense_exemption.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The r2 review found the joint 2021-2023 path read only person-level self-employed health insurance deductions, so a deduction supplied for the return (as #10055's federal Schedule A exclusion honors) was lost. New mt_premium_deduction_joint nets the return's deduction from the head's and spouse's premiums, medical premiums first (the same exclusion as Schedule A) and the rest from long-term care premiums; dependents net their own deductions. Invariants now check the pooled closed form, draw return-level deductions, and qualify the dependent payer boundary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bare state_code in a situation is not applied to the run year, so every generated return fell back to the default state and the Montana outputs were zero. Key it by year and assert every return is in Montana. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Core treats a formula variable supplied for some members as an input for all of them and fills the rest with 0, so mixing supplied and derived deductions in one batch zeroed the return deduction of returns that did not supply one. Each batch now derives the deduction, supplies it for every person, or supplies it for every return; slope twins, the single-filer differential and the seeded non-vacuity checks follow the mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The r3 review found the joint 2021-2023 line 1 read only primitive other medical expenses, so a supplied itemized_medical_expenses subtotal was lost ($10,000 at $40,000 AGI gave $0, not $7,000). Line 1 now starts from the federal subtotal, restores the exclusion its formula applied (zero for a supplied subtotal, as North Dakota and New Mexico use it after #10055), and takes out every member's premiums; for a computed subtotal that is the members' other medical expenses. Also narrow two claims in mt_premium_deduction_joint's documentation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ine 1 The r4 review found a supplied itemized_medical_expenses subtotal that legally includes eligible long-term care premiums (26 U.S.C. 213(d)(1)(D), (d)(10)) had them deducted again on Montana line 3. - New parameter gov.irs.deductions.itemized.medical.long_term_care_premium_limit: the 213(d)(10) age-based limits for 2021-2026 from Rev. Procs. 2020-45, 2021-45, 2022-38, 2023-34, 2024-40 and 2025-32 (band tops, right=True). - New eligible_long_term_care_premiums (person) = min(premiums, limit). - New itemized_medical_expenses_long_term_care_premiums (tax unit): the eligible premiums inside the subtotal, zero for the computed subtotal (which counts none yet) and the members' eligible premiums for a supplied one. - Montana's line 1 base subtracts it, so line 3 deducts those premiums once, in full. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The r5 review found that inferring the long-term care premiums inside a supplied itemized_medical_expenses from the premium input fails when the self-employed deduction took them (162(l)(2)(C), (l)(3)) and uses the payer's age rather than the insured's. Replace the inference with a pure input, itemized_medical_expenses_long_term_care_premiums (default 0: a supplied subtotal has the computed subtotal's contents), and document the supplied-subtotal contract on itemized_medical_expenses. Remove the 213(d)(10) parameter and eligible_long_term_care_premiums, which nothing uses now; the federal long-term care follow-up adds them with insured-age attribution. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sion The r6 review found a supplied Schedule A subtotal that already leaves out self-employed premiums had them removed again from Montana line 1. A supplied subtotal is taken as medical costs paid by default (as North Dakota and New Mexico use it); a net Schedule A amount now comes with its excluded premiums in itemized_medical_expenses_applied_exclusion, which every consumer (federal, ND, NM, MT) then reads consistently. Document this on itemized_medical_expenses and the applied exclusion, and add net-subtotal YAML cases with person- and return-level deductions beside the gross-cost case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The r7 review found the applied-exclusion override could not serve every consumer when the self-employed deduction also covered long-term care premiums: North Dakota and New Mexico restore the full exclusion to get costs paid, while Montana must not treat the long-term care part as other expenses. Montana's line 1 base now removes only the medical premiums still in the subtotal, max(0, premiums - exclusion), with the exclusion taken from medical premiums first as the computed formula does. A supplied override is all premiums the self-employed deduction took. Document this on the federal variables and on the North Dakota and New Mexico consumers, and test the same net composition in all three. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The r8 review found that a supplied exclusion above the head's and spouse's medical premiums (its long-term care part) was taken from dependents' premiums too, so Montana line 1 kept them while line 2 deducted them. Take only min(filer premiums, exclusion) off the members' premiums, matching the federal bound; computed subtotals are unchanged. Also document that the long-term care input follows the same medical-first split, qualify itemized_medical_expenses_excluded_premiums, add the regression, partial-deduction and New Mexico credit cases, and add a differential invariant: a net Schedule A subtotal supplied with its exclusion gives the computed path's Montana deduction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
October 18, 2026 18:28
Contributor
Author
|
Hand-off to the US + core hub (owner session local_117896e0 / 7ed8a0f9).
|
Contributor
Author
|
US + core hub merge audit, us#9947 at
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #9930. Builds on #9903 (merged as 51487d5) and #10055 (merged as 3d908a6), which nets the self-employed health insurance deduction out of federal Schedule A premiums. The diff is against
main.Summary
For TY2021–2023, Montana's Itemized Deductions Schedule (Form 2 page 7) splits medical costs across three lines:
Lines 2 and 3 cover payments made by the taxpayer and exclude premiums already deducted in Montana AGI. PolicyEngine floored everything together:
mt_medical_expense_deduction_jointandmt_medical_expense_deduction_indivput the premiums (including modeled Medicare Part B) under the 7.5% floor and left out long-term care premiums.What the law and forms say
Former MCA § 15-30-2131(1) (MCA 2021; repealed effective January 1, 2024):
Form 2 page 7 (2022, PDF p. 7; 2021 and 2023 have the same lines):
Form 2 instructions (2022, PDF pp. 32–33; 2021 PDF pp. 31–32 and 2023 PDF p. 36 say the same):
26 U.S.C. 162(l)(2)(C) (govinfo) lets eligible long-term care premiums into the self-employed health insurance deduction. So line 3 must also net that deduction, not only line 2.
From 2024 the 2024 instructions (PDF p. 8) list the Itemized Deductions Schedule (and filing status 2a's schedules) as discontinued. Montana then takes federal itemized deductions, where premiums stay under the federal floor. That treatment is unchanged here.
Changes
mt_premium_deduction_joint(new, tax unit; lines 2 and 3 of a joint return):self_employed_health_insurance_ald, supplied or summed from the head's and spouse's amounts).itemized_medical_expenses_excluded_premiums(the bounded exclusion the computed federal subtotal uses), and the rest off long-term care premiums.mt_eligible_medical_insurance_premiums(new, person; line 2 amounts used for the head and spouse on separate returns) =medical_expense_health_insurance_premiums− Exclude SE health insurance deductions from Schedule A medical expenses #10055'sself_employed_health_insurance_ald_excluded_premiums(the person's self-employed deduction, capped at their premiums).medical_expense_health_insurance_premiumsincludes modeled Medicare Part B.pre_tax_health_insurance_premiums, a separate input that reduces wages throughpre_tax_contributions. So pre-tax premiums stay off line 2.mt_eligible_long_term_care_insurance_premiums(new, person; line 3 amounts used for the head and spouse on separate returns) = max(0,long_term_health_insurance_premiums− the part of the person's self-employed deduction not used by line 2).mt_medical_expense_deduction_joint:state_specific_deduction_applies): line 1 = max(0, base − 7.5% ×mt_agi_joint), plusmt_premium_deduction_joint, held by the head.itemized_medical_expenses− medical premiums still in it −itemized_medical_expenses_long_term_care_premiums).itemized_medical_expenses_applied_exclusion)).other_medical_expenses, so the self-employed deduction is netted once, on lines 2–3.itemized_medical_expenses_applied_exclusion, so only the premiums still inside it leave line 1 (contract documented on both federal variables).medical_expense_deduction, unchanged.itemized_medical_expenses_long_term_care_premiums(new, tax unit; a pure input, default 0): the long-term care premiums a supplieditemized_medical_expensesincludes, such as eligible premiums counted on Schedule A line 1 and not taken as the self-employed deduction.itemized_medical_expenses.mt_medical_expense_deduction_indiv: the same three lines per filer on their ownmt_agi_indiv, while the schedule applies. Its existing head-or-spouse restriction excludes dependents' own payments. If a reform allows separate filing after 2023 (enable_mt_mfss_2024_reform), it keeps Exclude SE health insurance deductions from Schedule A medical expenses #10055's treatment: premiums net of the self-employed deduction, under the floor with the other expenses.is_tax_unit_head_or_spouse: true.Household effects (historical runs)
These runs compared
main5ec60b2 with the PR at 39a5e66, both on policyengine-core 3.33.4. They predate the payer-restriction fix at 715ac2c. The hub reruns the impact at the new head; the figures below remain historical evidence pending that run.All five itemize before and after.
The self-employed rows show the deduction netted once:
Script and outputs:
~/reviews/mt-medical-premiums-2026-10-06/household_examples.py,household_base_r3.json,household_pr_r3.json.Hub microsimulation impact (current head)
A real microsimulation on the default dataset, main at the merge base
83e03a92f6against this PR's head715ac2cd77, for 2024. The runs went one at a time under the shared heavy-job lock. Sums are weighted.mt_income_taxmt_itemized_deductionsmt_medical_expense_deduction_jointmt_medical_expense_deduction_indivnm_medical_expense_creditstate_income_taxincome_taxhousehold_net_incomehousehold_benefitsCurrent law at this head
715ac2cd77against main83e03a92f6: no change in any compared variable, because the branches this PR changes are off from 2024 (SB 399 repealed § 15-30-2131). The 2024 counterfactual above predates the payer fix and is historical.Comparison files are in
fixes/9947-impact/on the hub host.Microsim impact (historical runs)
The saved impact files identify PR heads 39a5e66 and 96d2f72. They do not establish results at 715ac2c. The hub reruns the impact at the new head.
2024 counterfactual sensitivity: legacy Montana medical and standard deduction branches enabled on both sides. The change applies to TY2021–2023 only, and the default dataset (
populace_us_2024) holds 2024 records only (a 2021–2023 run reads zero inputs). So both sides run 2024 withgov.states.mt.tax.income.deductions.itemized.state_specific_deduction_appliesand...standard.state_specific_deduction_appliesswitched on (impact/reform_2023_deductions_on_2024.json). Income, rates and other 2024 law stay as they are. This sizes the change; it is not a TY2021–2023 revenue estimate.mt_medical_expense_deduction_jointmt_itemized_deductions_jointmt_taxable_income_jointmt_income_taxincome_tax(federal),household_benefitsThe PR side ran at 39a5e66. The inspected dataset supplies no
itemized_medical_expenses, but later production changes include the payer restriction, so these figures are not presented as results at the new head.Current law, 2024, historical run (base
main5ec60b2; PR side 96d2f72): zero change inmt_income_tax,mt_medical_expense_deduction_joint,mt_itemized_deductions_joint,mt_standard_deduction_joint,mt_taxable_income_joint,state_income_tax,income_tax,household_net_incomeandhousehold_benefits. No record changed. Output: the hub'sfixes/9947-impact/compare.2024.json, copied toimpact/current-law-2024/.The change affects TY2021–2023 only. From 2024:
defined_for);itemized_medical_expenses_long_term_care_premiumsinput feed only these two Montana medical-deduction variants.The unchanged 2024+ branches retain current-law treatment. The hub reruns the impact at the new head.
Tests
Hub shell-review response runs use Python 3.13.9, policyengine-core 3.33.2 and Hypothesis 6.168.5, one file per process in the foreground, with all five numerical thread limits set to 4 and
OMP_WAIT_POLICY=PASSIVE. At 715ac2c:mt_medical_expense_deduction_joint.yaml29 passed;mt_medical_expense_deduction_indiv.yaml10 passed;nm_medical_expense_credit.yaml24 passed;test_mt_medical_premium_deduction_invariants.py5 passed; federalmedical_expense_deduction.yaml11 passed; additionally, the modifiedmt_premium_deduction_joint.yaml6 passed.make formatandgit diff --checkpassed.The owner runs below are historical. They used one file per process through the shared heavy lock (
~/reviews/us-hub/scripts/heavy_run.sh) on policyengine-core 3.33.4.mt_eligible_medical_insurance_premiums.yaml,mt_eligible_long_term_care_insurance_premiums.yaml,mt_premium_deduction_joint.yaml,mt_medical_expense_deduction_joint.yaml,mt_medical_expense_deduction_indiv.yaml,test_mt_medical_premium_deduction_invariants.pyandtest_mt_joint_agi_deductions_properties.py(Floor Montana's joint-return medical and standard deductions on the return's Montana AGI, and on federal AGI from 2024 #9903's, 15 tests). All pass.mt_medical_expense_deduction_joint.yaml(26 cases),mt_itemized_deductions_joint/indiv.yaml, both federal-itemization files,mt_standard_deduction_joint.yaml,mt/tax/income/integration.yaml,mt_taxable_income_joint.yaml,mt_income_tax*.yaml,mt_deductions_indiv.yaml,mt_tax_unit_itemizes.yaml,state_itemized_deductions.yaml,salt_refund_integration.yaml, the federalmedical_expense_deduction.yaml,nd_renters_refund_income.yaml(15),nm_medical_expense_exemption.yaml(13) andnm_medical_expense_credit.yaml(23). All pass. The code-health reference tests: 119 passed.mt_medical_expense_deduction_joint.yaml28 passed;nm_medical_expense_credit.yaml24 passed;test_mt_medical_premium_deduction_invariants.py5 passed, with property 9 running in the three seeded state years.main5ec60b2, core 3.33.4:mt_eligible_medical_insurance_premiums.yaml: 8 of 8 fail (variable absent);mt_eligible_long_term_care_insurance_premiums.yaml: 5 of 5 fail (absent);mt_premium_deduction_joint.yaml: 6 of 6 fail (absent);mt_medical_expense_deduction_joint.yaml: 15 of 28 fail (the 13 that pass are Floor Montana's joint-return medical and standard deductions on the return's Montana AGI, and on federal AGI from 2024 #9903's and Exclude SE health insurance deductions from Schedule A medical expenses #10055's cases and the 2024 cases);mt_medical_expense_deduction_indiv.yaml: 4 of 10 fail.Invariants
tests/unit/test_mt_medical_premium_deduction_invariants.pyuses Hypothesis batches plus a seeded population of 120 returns, over 2021–2024. Each batch runs as one vectorized simulation that holds each return, a twin with higher premiums, and a twin without pre-tax premiums. Each batch takes the self-employed deduction one way: derived from self-employment income, supplied for every person, or supplied for every return. Mixing them in one batch is not possible, because core treats a formula variable supplied for some members as an input for all, filling the rest with 0. The seeded population covers each mode in a different state year.The 7.5% rate comes from Form 2 line 1c. Montana AGI and the self-employed deductions are read from the model; they are inputs to the properties, not derived independently. The properties use payer-attributed premium inputs: only the head's and spouse's payments enter the filers' premium deduction. A filer's payments for dependent coverage belong on the filer's input; a dependent's own payments are excluded.
mt_premium_deduction_joint, held by the head.itemized_medical_expenses+ Exclude SE health insurance deductions from Schedule A medical expenses #10055'sitemized_medical_expenses_applied_exclusion− premiums. The long-term care input is asserted to be 0. This fails if the federal aggregate gains a component.medical_expense_deduction, and the separate variant is 0.Non-vacuity (seeded population) checks that the population includes:
Why Python: YAML can't generate populations, compare twin returns, or re-run a population with supplied subtotals. Cost:
test_mt_medical_premium_deduction_invariants.pyis new in this PR. In the owner's earlier measurement (macOS, Python 3.14, core 3.33.4) it takes 21.8 s wall time including interpreter start and model build (6.1 s of test time), with 1.13 GB peak RSS. It builds up to 13 simulations: up to 6 Hypothesis examples, 4 seeded years, and 3 net-subtotal twins. #9903's updated property file took 21.4 s and 2.42 GB; the change adds two variables to one test. Both files run in Rest shard 1'sremaininggroup. On run 38945181819 (2026-10-16, Linux) that group took 16:40 wall time at 8.09 GB peak RSS. That figure is the existing group's, not a measurement of this addition, and no new job or worker was added.The hub shell rerun uses macOS, Python 3.13.9 and core 3.33.2: 5 passed in 48.47 s, 104.68 s wall including interpreter startup. Peak RSS is unavailable because the sandbox rejects the timing wrapper's kernel resource query; the wrapper exited 1 after pytest passed. There is no comparable before measurement in this environment. The payer correction adds assertions to the existing batches and creates no additional simulations.
Not modeled (no PE inputs)
health_insurance_premiums._indivcounts each spouse's own amounts, as before.Follow-ups (outside this PR)
itemized_medical_expensesand defines the sameitemized_medical_expenses_long_term_care_premiumsvariable with a formula. When it lands after this PR, it must update Montana invariant properties 6 and 9 and reconcile payer attribution with the insured's identity and age, including self-employed deduction coordination.Reviews
mt_premium_deduction_joint.itemized_medical_expensessubtotal was dropped from line 1 (R3-1, P2): fixed, with two YAML cases.mt_premium_deduction_joint's documentation were narrowed (R3-2, P3).itemized_medical_expenses.itemized_medical_expenses_applied_exclusion.units, so property 9 never ran (P1). Fixed in bf1661d; the reviewer found no remaining policy blocker. The live body was stale (P3); refreshed here.~/reviews/mt-medical-premiums-2026-10-06/review-r*.md.Review (hub shell review): response
The GPT-6.1 Sol shell review at bf1661d identified a P2 payer-attribution error: the joint formula added dependents' own premiums to the filers' deduction. Former MCA § 15-30-2131(1)(g) allows payments made by the taxpayer. The fix at 715ac2c counts only the head's and spouse's payer-attributed premiums. The separate formula already restricts claims to the head and spouse and needs no production change.
itemized_medical_expenses, New Mexico's medical expense credit and exemption, and North Dakota's renters-refund income reader formulas are unchanged against both the original base 5ec60b2 and currentmain83e03a9; the AST audit passed.gh/main83e03a9 cleanly in 9119ab8 before applying the payer fix.mt_medical_expense_deduction_joint.yaml29 passed;mt_medical_expense_deduction_indiv.yaml10 passed;nm_medical_expense_credit.yaml24 passed;test_mt_medical_premium_deduction_invariants.py5 passed; federalmedical_expense_deduction.yaml11 passed; additionally, the modifiedmt_premium_deduction_joint.yaml6 passed.make formatandgit diff --checkpassed.axiom: TheAxiomFoundation/rulespec-us#1528 queued (former MCA § 15-30-2131(1)(g), Itemized Deductions Schedule lines 2–3, TY2021–2023; the signed encoder is blocked because the pinned corpus has § 15-30-2131 only as a repeal marker and no 2021–2023 Form 2 scope; sibling of #1520, which covers line 1)
🤖 Generated with Claude Code