Files
bookspec/examples/members-close.true-up-of-a-per-close-split.toml
T
swaitsandClaude Opus 5.5 469581975d P3: odd cents split the same running way everywhere (defect 17, D-38)
Members' shares of earnings are split cumulatively by largest remainder in
the closes, the members' equity statement, the K-1 worksheet and the
viewer, so a member's capital on a given day never moves by a cent when its
month is later closed. Old closes replay as they were; the first P3 close
carries any true-up. Feature members_cumulative. Kani and Lean proofs of
the bounded drift; bookspec examples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
2026-10-20 21:35:00 -06:00

158 lines
4.2 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
id = "members-close.true-up-of-a-per-close-split"
title = "Closes rounded one at a time, trued up by the first cumulative close"
rule = "When earlier closes split each close's net on its own, the first cumulative close that posts an entry MUST give each member their split of everything closed to the members, less what the earlier closes gave them, so it trues up the rounding they left; until it posts, the statement of members' equity MUST show the capital those closes posted, not the pending true-up."
status = "CHOICE"
sources = ["Treas. Reg. §1.704-1(b)(2)(iv)(b)"]
tags = ["partnership", "close", "rounding", "statement", "book", "us"]
# Books migrated from an engine that rounded each close on its own: three
# months of one cent at 50/50, each tie to A. April's cent is closed by the
# cumulative rule, counting from the first close.
#
# By hand, from the rule:
# January to March, each close on its own: 0.005 each, the tie to A, so
# A 0.03, B 0.00 (exact: 0.015 each).
# As of Apr 30, April's cent not yet closed: the split of everything,
# 0.04, is 0.02 / 0.02; of the closed 0.03, 0.02 / 0.01 (the tie to
# A); the unclosed cent is B's (0.02 − 0.01): A 0.03, B 0.01. The
# rounding the earlier closes left (A 0.01 ahead) shows only once
# posted.
# April's close: the running 0.04 is 0.02 / 0.02, less what was given
# (0.03 / 0.00): A −0.01, B +0.02. The entry: Dr 4000 0.01, Dr 3000
# 0.01, Cr 3001 0.02. As of Apr 30: A 0.02, B 0.02, each exact; as of
# Mar 31, still A 0.03, B 0.00.
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "accrual"
rounding = "largest-remainder"
[[setup.accounts]]
code = "1000"
name = "Cash"
type = "asset"
[[setup.accounts]]
code = "3000"
name = "Capital, A"
type = "equity"
[[setup.accounts]]
code = "3001"
name = "Capital, B"
type = "equity"
[[setup.accounts]]
code = "4000"
name = "Sales"
type = "revenue"
[[setup.members]]
name = "A"
capital_account = "3000"
share = "0.5"
[[setup.members]]
name = "B"
capital_account = "3001"
share = "0.5"
[[events]] # event 1
date = "2026-01-10"
description = "January's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 2
date = "2026-01-31"
description = "Close January, rounded on its own"
close = { start = "2026-01-01", to = "members", rounding = "per-close" }
[[events]] # event 3
date = "2026-02-10"
description = "February's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 4
date = "2026-02-28"
description = "Close February, rounded on its own"
close = { start = "2026-02-01", to = "members", rounding = "per-close" }
[[events]] # event 5
date = "2026-03-10"
description = "March's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 6
date = "2026-03-31"
description = "Close March, rounded on its own"
close = { start = "2026-03-01", to = "members", rounding = "per-close" }
[[events]] # event 7
date = "2026-04-10"
description = "April's sale"
lines = [
{ account = "1000", side = "debit", amount = "0.01" },
{ account = "4000", side = "credit", amount = "0.01" },
]
[[events]] # event 8
date = "2026-04-30"
description = "Close April, cumulatively"
close = { start = "2026-04-01", to = "members" }
[[expect]]
query = "balances"
as_of = "2026-03-31"
after = 6
[expect.values]
"3000" = "0.03"
"3001" = "0.00"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-04-30"
after = 7
[expect.values]
"A.ending" = "0.03"
"B.ending" = "0.01"
[[expect]]
query = "entry"
entry = 8
[expect.values]
"4000.debit" = "0.01"
"3000.debit" = "0.01"
"3001.credit" = "0.02"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-04-30"
[expect.values]
"A.ending" = "0.02"
"B.ending" = "0.02"
[[expect]]
query = "members_equity"
from = "2026-01-01"
to = "2026-03-31"
[expect.values]
"A.ending" = "0.03"
"B.ending" = "0.00"