Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fix-ga-retirement-capital-loss.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Georgia's retirement income exclusion now uses federally loss-limited capital gains and matches the Schedule 1 worksheet by flooring earned income and other retirement income separately before applying the exclusion cap.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: Georgia accounts for the following income sources under the retirement exclusion.
description: Georgia accounts for these non-earned income sources on lines 6 through 13 of the retirement income exclusion worksheet.
metadata:
label: Georgia retirement income exclusion income sources
period: year
Expand All @@ -17,8 +17,7 @@ values:
- interest_income
- dividend_income
- rental_income # royalties included in the rental income
- capital_gains
- ga_retirement_exclusion_countable_capital_gains
- alimony_income
- taxable_pension_income
- taxable_ira_distributions
- ga_retirement_exclusion_countable_earned_income # earned income: capped
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,78 @@
state_fips: 13
output:
ga_income_tax: 0

- name: Capital loss does not wipe out Georgia retirement exclusion earned income
absolute_error_margin: 1
period: 2024
input:
people:
person1:
age: 69
employment_income: 10_000
short_term_capital_gains: -10_000
is_tax_unit_head: true
tax_units:
tax_unit:
members: [person1]
premium_tax_credit: 0
local_income_tax: 0
state_sales_tax: 0
spm_units:
spm_unit:
members: [person1]
snap: 0
tanf: 0
households:
household:
members: [person1]
state_fips: 13
output:
ga_retirement_exclusion: 5_000
ga_subtractions: 5_000
ga_agi: 2_000

- name: Georgia retirement exclusion uses loss-limited capital losses
absolute_error_margin: 10
period: 2024
input:
people:
primary:
age: 69
employment_income: 123_105
taxable_interest_income: 8_156
long_term_capital_gains: 52_909
short_term_capital_gains: -248_110
taxable_private_pension_income: 13_440
is_tax_unit_head: true
spouse:
age: 63
taxable_interest_income: 8_156
long_term_capital_gains: 52_909
short_term_capital_gains: -248_110
taxable_private_pension_income: 13_440
is_tax_unit_spouse: true
tax_units:
tax_unit:
members: [primary, spouse]
premium_tax_credit: 0
local_income_tax: 0
state_sales_tax: 0
marital_units:
marital_unit:
members: [primary, spouse]
families:
family:
members: [primary, spouse]
spm_units:
spm_unit:
members: [primary, spouse]
snap: 0
tanf: 0
households:
household:
members: [primary, spouse]
state_code: GA
output:
ga_retirement_exclusion: 45_192
ga_agi: 118_105
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- name: Earned income is preserved when other retirement income is negative
period: 2024
input:
state_code: GA
ga_retirement_exclusion_countable_earned_income: 5_000
ga_retirement_exclusion_countable_capital_gains: -3_000
output:
ga_retirement_income_exclusion_retirement_income: 5_000

- name: Retirement income adds earned income and floored other income separately
period: 2024
input:
state_code: GA
ga_retirement_exclusion_countable_earned_income: 5_000
ga_retirement_exclusion_countable_capital_gains: -1_500
taxable_interest_income: 8_156
taxable_private_pension_income: 13_440
output:
ga_retirement_income_exclusion_retirement_income: 25_096
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from policyengine_us.model_api import *


class ga_retirement_exclusion_countable_capital_gains(Variable):
value_type = float
entity = Person
label = "Countable capital gains (losses) for the Georgia retirement exclusion"
unit = USD
definition_period = YEAR
reference = (
"https://dor.georgia.gov/document/document/2024-it-511-individual-income-tax-booklet/download", # Schedule 1, Page 2
"https://www.irs.gov/pub/irs-pdf/f1040sd.pdf",
)
defined_for = StateCode.GA

def formula(person, period, parameters):
return person("loss_limited_net_capital_gains_person", period)
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ def formula(person, period, parameters):
retirement_income = person(
"ga_retirement_income_exclusion_retirement_income", period
)
return min_(retirement_income, cap)
return max_(0, min_(retirement_income, cap))
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,18 @@ class ga_retirement_income_exclusion_retirement_income(Variable):
reference = (
"https://dor.georgia.gov/document/booklet/2021-it-511-individual-income-tax-booklet/download", # Page 15
"https://dor.georgia.gov/document/document/2022-it-511-individual-income-tax-booklet/download", # Page 15
"https://dor.georgia.gov/document/document/2024-it-511-individual-income-tax-booklet/download", # Schedule 1, Page 2
"https://advance.lexis.com/documentpage/?pdmfid=1000516&crid=fb5db531-a80f-4790-bddb-eefc8327ef60&config=00JAA1MDBlYzczZi1lYjFlLTQxMTgtYWE3OS02YTgyOGM2NWJlMDYKAFBvZENhdGFsb2feed0oM9qoQOMCSJFX5qkd&pddocfullpath=%2Fshared%2Fdocument%2Fstatutes-legislation%2Furn%3AcontentItem%3A65D2-CDH3-CGX8-044N-00008-00&pdcontentcomponentid=234186&pdteaserkey=sr1&pditab=allpods&ecomp=8s65kkk&earg=sr1&prid=66f02b0a-c5ae-4162-9535-127751546807",
)
defined_for = StateCode.GA

adds = "gov.states.ga.tax.income.agi.exclusions.retirement.sources"
def formula(person, period, parameters):
p = parameters(period).gov.states.ga.tax.income.agi.exclusions.retirement
# Georgia Schedule 1 Page 2 floors the earned-income portion and the
# remaining retirement-income sources separately before adding them.
countable_earned_income = max_(
0, person("ga_retirement_exclusion_countable_earned_income", period)
)
other_retirement_income = add(person, period, p.sources)
countable_other_retirement_income = max_(0, other_retirement_income)
return countable_earned_income + countable_other_retirement_income
Loading