Skip to content

A child's business loss turns the SSI student exclusion negative and gives an eligible child an allocation (20 CFR 416.1165(b)) #10558

Open

Description

@MaxGhenis

What the model does

When a child's SSI earned income nets below zero, two formulas pass the loss into parental deeming.

  • ssi_blind_or_disabled_working_student_exclusion.py lines 17-19 takes the smaller of the monthly limit and monthly earnings and sets no floor at zero, so −$3,000 of earnings gives a −$3,000 exclusion. ssi_unearned_income_deemed_from_ineligible_parent.py lines 25-31 then subtracts that exclusion from the parents' earned income, which adds $3,000 to it.
  • ssi_ineligible_child_allocation.py lines 13-21 returns max_(0, allocation - income). An eligible child's allocation equals zero, so −$3,000 of income gives that child a $3,000 allocation. The deeming formula sums allocations across the tax unit (lines 37-39) and takes the total off the parents' income.

What the law says

20 CFR 416.1112(c)(3) excludes a student's earned income up to monthly and yearly limits, so a child with no earnings has nothing to exclude. 416.1165(b) deducts "an allocation for each ineligible child in the household", while an eligible child receives deemed income under paragraph (e). 416.1163(b)(2) reduces a child's allocation by the child's income and provides no increase for a loss.

Hand-computed case

A parent, 45, in Texas in 2026 has $30,000 of wages and a $6,000 private pension and reports one own child. Their child, 10, meets the disability criteria, takes up SSI, and has $1,000 of wages and a $4,000 Schedule C loss. I ran this at 035a1570, and the three formulas read the same on main.

Student exclusion Child's allocation Deemed from parent ssi, child
Model −3,000 3,000 6,942 5,226
By hand 0 0 8,442 3,726

The model raises the parents' earned income to $33,000 and cuts their unearned income to $3,000. It deems (3,000 − 240) + (33,000 − 780) / 2 − 11,928 = 6,942 and pays 11,928 − (6,942 − 240) = 5,226.

By hand, the parents keep their $30,000 of earnings and their $6,000 pension, which 20 CFR 416.1121(a) counts. The law deems (6,000 − 240) + (30,000 − 780) / 2 − 11,928 = 8,442 and pays 11,928 − (8,442 − 240) = 3,726.

Remove the pension and the two errors cancel. The $3,000 allocation spills from unearned to earned income and takes back the $3,000 the exclusion added. The model then deems (30,000 − 1,020) / 2 − 11,928 = 2,562 and pays $9,606, the same as the hand figure.

Possible fix

  • Floor the exclusion at zero.
  • Floor income at zero in ssi_ineligible_child_allocation.py. That gives an eligible child no allocation and stops a loss from lifting an ineligible child's allocation above the full amount.
  • Deem SSI parental income from the child's co-resident parents, not the tax unit #10159 removes the subtraction from the parents' earnings but keeps reading ssi_ineligible_child_allocation, so the allocation needs its own fix.

Not covered here

How a business loss offsets a person's other earnings, which #10531 leaves open. Either way the child has no countable earnings and the parents' income stays whole, so the $3,726 holds.

Activity

  1. MaxGhenis commented on Oct 31, 2026

    @MaxGhenis
    ContributorAuthor

    I changed the worked case from $6,000 of taxable interest to a $6,000 private pension. 20 CFR 416.1124(c)(22) excludes interest from a countable resource, and 416.1161(a)(26) does the same for a parent. The $3,726 I first posted doesn't hold for savings interest, and #10079 tracks that treatment.

    416.1121(a) counts a private pension. With one, the model at 035a1570 returns the same −$3,000 exclusion, $3,000 allocation, $6,942 deemed and $5,226 of ssi, so the $3,726 comparison in the issue stands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions