PolicyEngine / PolicyEngine/policyengine-us
EITC falls below the published maximum at exact earned-income-amount endpoints
- 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
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