Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Iowa (2023+): ia_modified_income adds the QBI deduction back twice

Aperta Adatta ai principianti
#10,512 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python, yaml
Ambito
backend, databases

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

bug state-income-tax states/ia

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.

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.py for 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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PolicyEngine/policyengine-us

Tutte le issue di PolicyEngine/policyengine-us

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.