Vermont child tax credit: the $20-per-$1,000 reduction is applied once to the total credit, but 32 V.S.A. 5830f(b) reduces each child's credit
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
- 78/100
Direzione di ricerca
Leggi policyengine_us/variables/gov/states/vt/tax/income/credits/ctc/vt_ctc.py e i parametri del credito del Vermont per ricostruire come viene applicata la riduzione ai figli idonei. Aggiungi il caso con due figli e un reddito superiore a 125.000 $ a tests/policy/baseline/gov/states/vt/tax/income/credits/vt_ctc.yaml ed esegui quel test; il lavoro è concluso quando il risultato corrisponde alla riduzione graduale per figlio descritta nell’issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Vermont's refundable child tax credit is $1,000 per qualifying child six or younger (five or younger before tax year 2025). Subsection (b) of 32 V.S.A. § 5830f says:
the amount of the credit per child under this section shall be reduced, but not below zero, by $20.00 for each $1,000.00, or fraction thereof, by which the individual's adjusted gross income exceeds $125,000.00
So each child's $1,000 falls by $20 per $1,000 of AGI above $125,000, and a family with two young children loses $40 per $1,000. Vermont's Joint Fiscal Office describes the credit the same way: it "phases out at a rate of 2% per $1,000 of income above $125,000, reaching zero at incomes of $175,000 and above" (JFO issue brief, January 2024).
vt_ctc (policyengine_us/variables/gov/states/vt/tax/income/credits/ctc/vt_ctc.py, unchanged on main at 19c240d0ff, 2026-10-07) subtracts one reduction from the total:
max_credit = p.amount * count_eligible
excess_agi = max_(agi - p.reduction.start, 0)
increments = np.ceil(excess_agi / p.reduction.increment)
total_reduction = p.reduction.amount * increments
return max_(max_credit - total_reduction, 0)
Families with two or more eligible children above $125,000 of AGI keep too much credit, and their credit ends at a higher income than the statute's $175,000.
Repro (policyengine-us 1.811.2)
from policyengine_us import Simulation
Y = 2025
def vt_ctc(wages, kids):
P = lambda v: {str(Y): v}
people = {"head": {"age": P(40), "employment_income": P(wages)}, "spouse": {"age": P(38)}}
members = ["head", "spouse"]
for i, a in enumerate(kids):
people[f"c{i}"] = {"age": P(a)}
members.append(f"c{i}")
sit = {"people": people, "tax_units": {"tu": {"members": members}}, "families": {"f": {"members": members}},
"spm_units": {"s": {"members": members}}, "marital_units": {"m": {"members": ["head", "spouse"]}},
"households": {"h": {"members": members, "state_code": P("VT")}}}
return Simulation(situation=sit).calculate("vt_ctc", Y)[0]
vt_ctc(130_000, (3, 2)) # 1900.0; statute: 2 x (1,000 - 5 x 20) = 1,800
vt_ctc(130_000, (5, 3, 1)) # 2900.0; statute: 3 x 900 = 2,700
vt_ctc(180_000, (3, 2)) # 900.0; statute: 2 x max(1,000 - 55 x 20, 0) = 0
Expected vs actual
Expected: count_eligible * max_(p.amount - total_reduction, 0). Actual: max_(count_eligible * p.amount - total_reduction, 0). The YAML tests in tests/policy/baseline/gov/states/vt/tax/income/credits/vt_ctc.yaml should add a two-child case above $125,000.
Impact on the PRD comparison
None of the prd-comparison dashboard's CPS tax units (2024-2026, aligned view) has two or more eligible Vermont children above $125,000 of AGI, so the bug moves no unit there; it matters for such families in household calculations. The comparison records the mechanism as cause state_credits.vt_ctc_reduction_once (a PolicyEngine bug), computed as PE's formula minus the statute on PE's AGI and roster.
🤖 Generated with Claude Code
- Lingua principale
- Python
- Stelle
- 166
- Fork
- 214
- Merge medio
- 2g 12h
- PR unite (30g)
- 261
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
-
bug hhs/tanf states/nh
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PolicyEngine/policyengine-us#9984 ·
I maintainer di solito rispondono entro 2 giorni
-
taxsim_tfica includes state employee payroll contributions; TAXSIM's FICA is OASDI and HI onlyApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
PolicyEngine/policyengine-us#9952 ·
I maintainer di solito rispondono entro 2 giorni
-
State EITC helper floors each spouse's earnings at zero instead of netting self-employment losses (IL, CO, DC, IN)Forse già presa @PavelMakarchuk l’ha presa 3 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
PolicyEngine/policyengine-us#9819 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
PolicyEngine/policyengine-us#9759 ·
I maintainer di solito rispondono entro 2 giorni
-
NYC school tax credit is not denied to filers who can be claimed as a dependent (§ 606(ggg)(1))Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
PolicyEngine/policyengine-us#9713 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di PolicyEngine/policyengine-us
Issue simili
-
docs(types): update the collection binding note now that typed collections shipped in pycubrid 1.9.0Apertadocumentation priority: low size: S
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
cubrid-lab/sqlalchemy-cubrid#768 ·
I maintainer di solito rispondono entro 1 giorno
-
bug help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Broken link in index.rstApertadocumentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
ansys/pydpf-core#3547 ·
I maintainer di solito rispondono entro 1 giorno
-
core
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
vectorize-io/hindsight#5457 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: LangChain drops OpenAI Responses text blocks from session recordingForse già presa @ktz03 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
volcengine/OpenViking#5806 ·
I maintainer di solito rispondono entro 1 giorno