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
This commit is contained in:
1 parent
249e216fc0
commit
aa884d35d1
14 files changed
+1573
-22
No files matched your search
@@ -0,0 +1,98 @@
|
||||
id = "depreciation-final-month-drift"
|
||||
title = "The final month of a mid-month life takes what the months before it leave, evenly over its days"
|
||||
rule = "When a life does not start on the 1st, its final month is charged the depreciable amount less what the months before it took, spread evenly over the final month's days."
|
||||
status = "CONVENTION"
|
||||
sources = ["ASC 360-10-35-4"]
|
||||
tags = ["depreciation", "straight-line", "final-month", "month-length-drift", "p3-defect-22"]
|
||||
|
||||
[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 = "1500"
|
||||
name = "Equipment"
|
||||
type = "asset"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "1510"
|
||||
name = "Accumulated Depreciation"
|
||||
type = "asset"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "3000"
|
||||
name = "Capital"
|
||||
type = "equity"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "6200"
|
||||
name = "Depreciation Expense"
|
||||
type = "expense"
|
||||
|
||||
# Cost 1,030.00, salvage 100.00 (930.00 to depreciate), 3 months from
|
||||
# 2026-01-15: the life is 2026-01-15 through 2026-04-14.
|
||||
[[setup.assets]]
|
||||
id = "D"
|
||||
description = "Asset D"
|
||||
cost = "1030.00"
|
||||
salvage = "100.00"
|
||||
life_months = 3
|
||||
in_service = "2026-01-15"
|
||||
method = "straight_line"
|
||||
cost_account = "1500"
|
||||
accumulated_account = "1510"
|
||||
expense_account = "6200"
|
||||
|
||||
[[events]]
|
||||
date = "2026-01-15"
|
||||
description = "Capital"
|
||||
lines = [
|
||||
{ account = "1000", side = "debit", amount = "1030.00" },
|
||||
{ account = "3000", side = "credit", amount = "1030.00" },
|
||||
]
|
||||
|
||||
[[events]]
|
||||
date = "2026-01-15"
|
||||
description = "Bought asset D"
|
||||
lines = [
|
||||
{ account = "1500", side = "debit", amount = "1030.00" },
|
||||
{ account = "1000", side = "credit", amount = "1030.00" },
|
||||
]
|
||||
|
||||
# Hand check (worked without the code): 930.00 / 3 = 310.00 a month.
|
||||
# January holds 17 of its 31 days: 310.00 x 17/31 = 170.00. February and
|
||||
# March are whole: 310.00 each. Before April: 790.00. April holds 14 days
|
||||
# (1-14) and is charged what is left, 930.00 - 790.00 = 140.00, evenly:
|
||||
# 10.00 a day (January's own daily rate, 310.00/31). Through Apr 13:
|
||||
# 130.00; accumulated 920.00; book value 1,030.00 - 920.00 = 110.00.
|
||||
[[expect]]
|
||||
query = "depreciation_schedule"
|
||||
asset = "D"
|
||||
as_of = "2026-04-13"
|
||||
|
||||
[expect.values]
|
||||
"2026-01" = "170.00"
|
||||
"2026-02" = "310.00"
|
||||
"2026-03" = "310.00"
|
||||
"2026-04" = "130.00"
|
||||
accumulated = "920.00"
|
||||
book_value = "110.00"
|
||||
|
||||
# Through Apr 14, the life's last day: April 140.00, accumulated 930.00,
|
||||
# book value 100.00 (the salvage, never depreciated).
|
||||
[[expect]]
|
||||
query = "depreciation_schedule"
|
||||
asset = "D"
|
||||
as_of = "2026-04-14"
|
||||
|
||||
[expect.values]
|
||||
"2026-04" = "140.00"
|
||||
accumulated = "930.00"
|
||||
book_value = "100.00"
|
||||
Reference in new issue
Block a user