Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

California YCTC skips Form 3514 truncation, $1 minimum and whole-dollar rounding

Open Beginner friendly
#10,179 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

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

Research direction

Start by locating the ca_yctc calculation and its tests; the issue gives the relevant Form 3514 lines and three wage cases to reproduce. Check how the calculation handles truncation, the $1 minimum, and whole-dollar rounding, and whether the same rule applies to the Foster Youth Tax Credit. Done when tests match line 28 for the listed cases and cover the Foster Youth calculation if applicable.

Written by the indexing model from the issue text.

Description

Problem

ca_yctc returns the continuous phase-out amount, but FTB Form 3514 (2025) Part VII computes the Young Child Tax Credit with truncation and a whole-dollar result (https://www.ftb.ca.gov/forms/2025/2025-3514-booklet.pdf):

  • line 26: excess earned income / 100, "two decimal places, do not round"
  • line 27: line 26 × $21.71, "two decimal places, do not round"
  • line 28: $1,189 minus line 27; "If your credit amount is between $0 and $1, enter $1. If your credit amount is over $1, round to the nearest whole dollar."

PolicyEngine-US 2.40.1, single wage earner, one qualifying child age 3, full-year resident, 2025:

Wages Form 3514 line 28 ca_yctc
$27,426 $1,189 $1,188.78
$27,500 $1,173 $1,172.72
$32,900 $1 $0.38

On a 239-case panel from $0 to $32,902 wages, 48 cases differ from line 28, by up to $0.62. The phase-out start, rate and end match the form; only the rounding and the $1 minimum differ. The $1 minimum is a rule, not just presentation: a filer just under the $32,901 cutoff gets $1 on the form and $0.38 here.

Should ca_yctc follow line 28 (truncate lines 26–27, $1 minimum, round to whole dollars)? If so, the same applies to the Foster Youth Tax Credit (lines 37–39).

Reproduce

from policyengine_us import Simulation
Y = 2025
for wages in [27_426, 27_500, 32_900]:
    sim = Simulation(situation={
        "people": {"a": {"age": {Y: 30}, "employment_income": {Y: wages}},
                   "c": {"age": {Y: 3}, "is_tax_unit_dependent": {Y: True}}},
        "tax_units": {"t": {"members": ["a", "c"]}},
        "households": {"h": {"members": ["a", "c"], "state_code": {Y: "CA"}}},
    })
    print(wages, sim.calculate("ca_yctc", Y)[0])  # 1188.78, 1172.72, 0.38
Dominant language
Python
Stars
168
Forks
216
Avg merge
3d 1h
Merged PRs (30d)
339

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PolicyEngine/policyengine-us

All issues in PolicyEngine/policyengine-us

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.