Files
bookspec/examples/schedule-daily-small-first-and-last-month.toml
swaitsandClaude Opus 5.5 aa884d35d1 P3: depreciation straight-line by days through the final month, schedules by day (defects 22, 9, D-37)
The final month takes what the months before leave, spread over its days;
a disposed asset stops on its disposal day. A skipped month is caught up
in the month the run is made; a reversed run un-posts its month. New
schedules spread by day; equal-months schedules must start on the 1st.
Amounts round to the currency's own minor unit. Kani and Lean proofs; an
exhaustive search over runs, reversals and disposals.

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

108 lines
2.8 KiB
TOML

id = "schedule-daily-small-first-and-last-month"
title = "A prepaid expense spread by the day: a small first and last month around full ones"
rule = "A prepaid expense covering whole months from a mid-month start is expensed by the day: each full month an equal share, the first month its days' share, and the last month what the others leave, one posting per calendar month touched."
status = "CHOICE"
sources = ["ASC 340-10-05-4", "ASC 210-10-45-1(g)", "DECISION: plan/served.md D-11, D-37 (owner, 2026-10-20)"]
tags = ["schedules", "prepaid-expense", "daily", "p3-defect-9"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "accrual"
rounding = "half-away-from-zero"
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "1300"
name = "Prepaid Expenses"
type = "asset"
[[setup.accounts]]
code = "3000"
name = "Capital"
type = "equity"
[[setup.accounts]]
code = "6300"
name = "Insurance"
type = "expense"
# 1,200.00 of insurance covering 2026-03-15 through 2027-03-14.
[[setup.schedules]]
id = "INS"
kind = "prepaid_expense"
description = "Liability insurance"
total = "1200.00"
start = "2026-03-15"
months = 12
convention = "daily"
balance_account = "1300"
pl_account = "6300"
[[events]]
date = "2026-03-15"
description = "Capital"
lines = [
{ account = "1000", side = "debit", amount = "1200.00" },
{ account = "3000", side = "credit", amount = "1200.00" },
]
[[events]]
date = "2026-03-15"
description = "Paid a year of insurance"
lines = [
{ account = "1300", side = "debit", amount = "1200.00" },
{ account = "1000", side = "credit", amount = "1200.00" },
]
[[events]]
run_schedules = { through = "2027-03-31" }
# Hand check (worked without the code): 1,200.00 / 12 = 100.00 a month.
# March 2026 holds 17 of its 31 days (15-31): 100.00 x 17/31 = 54.838...
# -> 54.84. April 2026 through February 2027 are whole: 100.00 each, 11 of
# them (cumulatives 154.84 ... 1,154.84). March 2027 holds days 1-14 and
# takes what is left: 1,200.00 - 1,154.84 = 45.16 (= 100.00 x 14/31 to the
# cent). Thirteen month ends for a twelve-month policy.
[[expect]]
query = "schedule_plan"
schedule = "INS"
[expect.values]
"2026-03-31" = "54.84"
"2026-04-30" = "100.00"
"2026-05-31" = "100.00"
"2026-06-30" = "100.00"
"2026-07-31" = "100.00"
"2026-08-31" = "100.00"
"2026-09-30" = "100.00"
"2026-10-31" = "100.00"
"2026-11-30" = "100.00"
"2026-12-31" = "100.00"
"2027-01-31" = "100.00"
"2027-02-28" = "100.00"
"2027-03-31" = "45.16"
# Through June 2026 the books have expensed 54.84 + 3 x 100.00 = 354.84,
# and 845.16 is still prepaid.
[[expect]]
query = "balances"
as_of = "2026-06-30"
[expect.values]
"1300" = "845.16"
"6300" = "354.84"
# Through March 2027, all of it.
[[expect]]
query = "balances"
as_of = "2027-03-31"
[expect.values]
"1300" = "0.00"
"6300" = "1200.00"