Iowa (2023+): ia_modified_income adds the QBI deduction back twice
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 83/100
Direzione di ricerca
Inizia da parameters/gov/states/ia/tax/income/modified_income/sources.yaml e confronta l’elenco delle fonti dal 2023 in poi con le voci precedenti; l’issue spiega che taxable_income_deductions include già la deduzione QBI. Rimuovi la fonte duplicata e aggiungi un test di regressione per il caso A, in cui il risultato atteso è l’esenzione dall’imposta dell’Iowa e $0 di imposta sul reddito. Esegui i test Iowa pertinenti per confermare il calcolo corretto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
From 2023 ia_modified_income (the net income for Iowa's low-income exemption, tax reduction and alternate tax,
Iowa Code 422.5(2)-(3)) adds the list gov.states.ia.tax.income.modified_income.sources:
ia_taxable_income_consolidated, taxable_income_deductions and qualified_business_income_deduction. Since 2018
taxable_income_deductions (gov.irs.deductions.deductions_if_not_itemizing / ..._if_itemizing) already includes
qualified_business_income_deduction. So the QBI deduction is added back twice, and modified income is higher than
the law's net income by the QBI deduction. The 2023 list came in with #5531.
The law
Iowa Code 422.5(2)(a) and (3)(a) (2024 code): "In calculating net income for purposes of this subsection, any
amount of itemized or standard deduction, personal exemption deduction, or qualified business income deduction that
was allowed as a deduction in computing federal taxable income under the Internal Revenue Code shall be added back."
https://www.legis.iowa.gov/docs/code/2024/422.5.pdf (same text in the current code:
https://www.legis.iowa.gov/docs/code/422.5.pdf). The alternate tax in 422.5(2)(b) and (3)(b) uses the same net income.
The Department of Revenue worksheets add each deduction once: line 1 = Iowa taxable income (IA 1040 line 4)
- "Itemized/standard deduction from federal form 1040, line 12" + personal exemption ($0) + "QBI deduction from
federal form 1040, line 13" + NOL carryover + lump-sum distributions.
- 2024 Iowa Alternate Tax Worksheet (41-145): https://revenue.iowa.gov/media/4098/download?inline
- 2024 Iowa Income Tax Reduction Worksheet (41-146, single filers): https://revenue.iowa.gov/media/4099/download?inline
Reproduction (PolicyEngine-US 2.72.3, main at 4c65c82191; 2.49.1 gives the same numbers)
from policyengine_us import Simulation
YEAR = 2024
def ia(people):
m = list(people)
sim = Simulation(situation={"people": people, "tax_units": {"t": {"members": m}},
"spm_units": {"u": {"members": m}}, "families": {"f": {"members": m}},
"marital_units": {"m": {"members": m}},
"households": {"hh": {"members": m, "state_code": {YEAR: "IA"}}}})
return {v: round(float(sim.calculate(v, YEAR)[0]), 2) for v in (
"adjusted_gross_income", "qualified_business_income_deduction", "taxable_income_deductions",
"ia_taxable_income_consolidated", "ia_modified_income", "ia_is_tax_exempt", "ia_income_tax")}
# A: single filer, 70, Schedule C income $25,500
ia({"h": {"age": {YEAR: 70}, "self_employment_income": {YEAR: 25_500}}})
# B: joint filers, 70 and 68, Schedule C income $40,000
ia({"h": {"age": {YEAR: 70}, "self_employment_income": {YEAR: 40_000}}, "s": {"age": {YEAR: 68}}})
| Variable | A: single, 70 | B: joint, 70 and 68 |
|---|---|---|
| adjusted_gross_income | 23,698.48 | 37,174.09 |
| qualified_business_income_deduction | 1,429.70 | 974.82 |
| taxable_income_deductions (standard + QBI) | 17,979.70 | 33,274.82 |
| ia_taxable_income_consolidated | 5,718.79 | 3,899.27 |
| ia_modified_income (PE) | 25,128.18 | 38,148.91 |
| net income under 422.5 (expected) | 23,698.48 | 37,174.09 |
| ia_is_tax_exempt (PE / expected) | false / true | false / false |
| ia_income_tax (PE / expected) | 191.63 / 0.00 | 51.57 / 51.57 |
| ia_alternate_tax_consolidated (PE / expected) | n/a | 350.49 / 294.92 |
Expected values come from the same simulation with the 2023+ source list set to ia_taxable_income_consolidated and
taxable_income_deductions only.
Case A: the worksheet gives 5,718.79 + 16,550 + 1,429.70 = 23,698.49, which is not more than $24,000, so the
filer is exempt (422.5(3)(a)). PE gets 25,128.18 and charges $191.63. Case B: the alternate tax is $55.57 too high,
but the regular tax is lower, so the tax does not change.
Effect
The double count can deny the low-income exemption or the tax reduction, and it raises the alternate tax by the
alternate rate x the QBI deduction (5.7% for 2024, 4.3% from 2025 in PE). A QBI deduction needs taxable income
above zero, so the exemption can change only where the standard deduction is below the exemption limit: single
filers 65+ ($24,000), heads of household 65+ ($32,000), and joint filers with one spouse 65+ ($32,000).
Suggested fix
Remove qualified_business_income_deduction from the 2023 entry of
parameters/gov/states/ia/tax/income/modified_income/sources.yaml (it is already inside
taxable_income_deductions), and add a test like case A.
Separate question, not part of this fix: from 2025 taxable_income_deductions also includes the OBBBA deductions
(tips, overtime, car loan interest, senior). The 2025 Iowa worksheets still list only federal line 12 and line 13,
so whether Iowa adds those back needs its own check.
Related
- #5531 (merged) added the 2023+ source list.
- #10045 (open) changes
ia_is_tax_exempt.pyfor filers who can be claimed as a dependent. It does not change
ia_modified_income. - #6558 (closed) was about Iowa's pre-2023 partial QBI deduction. #10062 and #9887 (open) are other Iowa income
issues. No duplicate found.
Impact on the PRD comparison
In the PolicyEngine-vs-Atlanta Fed PRD comparison on the CPS (2024-2026), no Iowa unit in the shared set changes
tax, so the comparison has no cause for it.
🤖 Generated with Claude Code
- Lingua principale
- Python
- Stelle
- 170
- Fork
- 217
- Merge medio
- 4g 8h
- PR unite (30g)
- 400
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PolicyEngine/policyengine-us
-
South Carolina OSS: require SSI's citizen or qualified-noncitizen test (S.C. Code Regs. 126-920)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
PolicyEngine/policyengine-us#10545 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
PolicyEngine/policyengine-us#10524 ·
I maintainer di solito rispondono entro 2 giorni
-
bug state-income-tax states/la
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PolicyEngine/policyengine-us#10510 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
PolicyEngine/policyengine-us#10487 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
PolicyEngine/policyengine-us#10355 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di PolicyEngine/policyengine-us
Issue simili
-
Admin member of a research group cannot see the HX2 allocation until they've been added to itAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
developmentseed/titiler-cmr#278 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni