You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Follow-ups from the #2746 review: trust income in other_investment_income is taxed as savings income, and two test comments overstate #2748
Vahid's review of #2746 left three nits. No issue or PR tracks the two below.
1. Trust income is taxed as savings income
The documentation of other_investment_income includes "interest from trusts or settlements". taxable_savings_interest_income adds the whole column to savings interest, so income tax charges all of it as savings income.
Trust income does not always have that character:
Discretionary and accumulation trusts. A payment to a beneficiary is treated as made after deducting tax at the trust rate, and the beneficiary is treated as having paid that tax (ITA 2007 s. 494). The beneficiary is taxed on it as non-savings income.
Interest-in-possession trusts. The income keeps its character. Trustees pay the dividend rate on dividend-type income and 20% on all other income (Trusts and Income Tax), so a beneficiary's share of dividends is dividend income.
So when a dataset or a household calculation puts trust income in this column, the model charges it at the savings rates and applies the starting rate for savings and the personal savings allowance. It also gives no credit for tax the trust has already paid.
A fix could limit the column's documentation to interest. Trust income would then get its own input that keeps its character and carries the s. 494 credit.
2. Two comments in test_other_investment_income_household_income_properties.py say more than the code
Docstring, lines 3-5. It says income tax charges other investment income "from trusts" as savings income, exactly as it charges bank interest. Only trust interest is charged that way. "Trust interest" would match the variable and the changelog.
Comment, line 128. It says net income "rises by the interest less the tax on it". The test checks a bound, 0 <= change <= interest, which allows for benefit responses. "Rises by at most the interest, and never falls" would match the test.
No change needed
capital_income has one reader outside this repo. policyengine-uk-data's wealth imputation (imputations/wealth.py) uses it as a QRF predictor, matched to the WAS measure of gross investment income.
Nothing moves on the FRS, because only the SPI dataset fills other_investment_income.
Where a dataset does fill the column, the predictor moves closer to the WAS measure.
Checked against main at 64cf582 (after #2746) and legislation.gov.uk. Code reading only.
Both items still stand on main.
variables/input/other_investment_income.py:8 still lists "interest from trusts or settlements", and taxable_savings_interest_income.py:17 reads the whole column.
tests/test_other_investment_income_household_income_properties.py lines 3-5 still say "and from trusts", and line 128 still says "rises by the interest less the tax on it" above a bound check.
On the statute, a small sharpening for whoever picks this up:
ITA 2007 s. 494 does the grossing up and the credit: the payment is treated as made after tax at the trust rate (s. 494(1)-(2)), and that tax is treated as paid (s. 494(3)).
The non-savings character comes from ITA 2007 s. 18(3), which limits savings income to interest, purchased life annuities, deeply discounted securities and accrued income profits. A discretionary payment is none of these, so it falls outside the savings rates, the starting rate for savings and the personal savings allowance.
s. 494(4)(b): for a settlor-interested trust the settlor, not the beneficiary, is treated as having paid the tax. A separate trust input would need to carry that too, or say it leaves it out.
Activity
vahid-ahmadi commentedon Oct 29, 2026
Checked against main at 64cf582 (after #2746) and legislation.gov.uk. Code reading only.
Both items still stand on main.
variables/input/other_investment_income.py:8still lists "interest from trusts or settlements", andtaxable_savings_interest_income.py:17reads the whole column.tests/test_other_investment_income_household_income_properties.pylines 3-5 still say "and from trusts", and line 128 still says "rises by the interest less the tax on it" above a bound check.On the statute, a small sharpening for whoever picks this up:
🤖 Generated with Claude Code