PolicyEngine / PolicyEngine/policyengine-us

EITC falls below the published maximum at exact earned-income-amount endpoints

Open
#9,161 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
162
Forks
212
Avg merge
3d 3h
Merged PRs (30d)
97

Description

Found during Axiom Foundation cross-engine validation of 26 USC 32 (grid comparison against `policyengine-us`; verified against `upstream/main` as of 2026-07-27, where `eitc_phased_in` is `min_(maximum, earnings * phase_in_rate)`).

For tax year 2026, `eitc_phased_in` comes in below the IRS-published maximum at two exact earned-income boundaries:

| Case | EITC earned income | Expected | Observed |
|---|---:|---:|---:|
| one child | $13,020 | **$4,427** | $4,426.7998046875 |
| three or more children | $18,290 | **$8,231** | $8,230.50 |

Rev. Proc. 2025-32 §4.06(1) defines the "earned income amount" as the amount at or above which the maximum credit is allowed, and publishes $13,020 / $4,427 (one child) and $18,290 / $8,231 (three or more). IRC §32(f) directs that the allowed credit be determined under Secretary-prescribed tables.

Because the published maximum and the published earned-income amount are *independently rounded*, the continuous product `earnings × rate` sits $0.20 / $0.50 below the published maximum at these exact endpoints — so `min_(maximum, phased_in_amount)` misses the maximum precisely where the revenue procedure says the maximum is allowed.

Suggested fix: add the published earned-income amount as a child-count-indexed parameter and return the published maximum when EITC earned income is at or above it, preserving phase-out behavior. Regression tests at $1 below / at / $1 above each 2026 endpoint for 0/1/2/3+ qualifying children would pin it; the exact one- and three-child endpoint assertions are $4,427 and $8,231.

Sources:
- 26 USC 32(a), (b), (f): https://uscode.house.gov/view.xhtml?edition=prelim&f=treesort&jumpTo=true&num=0&req=%28title%3A26+section%3A32+edition%3Aprelim%29+OR+%28granuleid%3AUSC-prelim-title26-section32%29
- Rev. Proc. 2025-32 §4.06(1), pp. 14–15: https://www.irs.gov/pub/irs-drop/rp-25-32.pdf

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Contributor guide

Open the contributing guide

Research direction

Locate the implementation of `eitc_phased_in` and the existing EITC parameter definitions, then inspect the related tests. Add the child-count-indexed earned-income endpoints described in the issue and verify the published maximum at $1 below, at, and $1 above each 2026 endpoint for 0, 1, 2, and 3+ qualifying children.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.