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
123 lines
3.1 KiB
TOML
123 lines
3.1 KiB
TOML
id = "depreciation-disposal-inside-a-posted-month"
|
|
title = "A disposal inside a month already run takes back the days after it"
|
|
rule = "When a month's depreciation was posted through its end and the asset is disposed of inside that month, the disposal credits back the depreciation for the days after the disposal day, so book value and gain are of the days held."
|
|
status = "CONVENTION"
|
|
sources = ["ASC 360-10-35-4"]
|
|
tags = ["depreciation", "disposal", "mid-month", "excess-depreciation", "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"
|
|
|
|
[[setup.accounts]]
|
|
code = "7100"
|
|
name = "Gain or Loss on Disposal"
|
|
type = "revenue"
|
|
|
|
# Asset X: 12,000.00, no salvage, 12 months from 2026-01-01 (1,000.00 a
|
|
# month; December the final month).
|
|
[[setup.assets]]
|
|
id = "X"
|
|
description = "Asset X"
|
|
cost = "12000.00"
|
|
salvage = "0.00"
|
|
life_months = 12
|
|
in_service = "2026-01-01"
|
|
method = "straight_line"
|
|
cost_account = "1500"
|
|
accumulated_account = "1510"
|
|
expense_account = "6200"
|
|
|
|
[[events]]
|
|
date = "2026-01-01"
|
|
description = "Capital"
|
|
lines = [
|
|
{ account = "1000", side = "debit", amount = "12000.00" },
|
|
{ account = "3000", side = "credit", amount = "12000.00" },
|
|
]
|
|
|
|
[[events]]
|
|
date = "2026-01-01"
|
|
description = "Bought asset X"
|
|
lines = [
|
|
{ account = "1500", side = "debit", amount = "12000.00" },
|
|
{ account = "1000", side = "credit", amount = "12000.00" },
|
|
]
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-01" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-02" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-03" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-04" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-05" }
|
|
|
|
[[events]]
|
|
run_depreciation = { asset = "X", period = "2026-06" }
|
|
|
|
# Disposed of 2026-06-15 for 7,000.00, after June's run (dated Jun 30).
|
|
[[events]]
|
|
date = "2026-06-15"
|
|
dispose_asset = { asset = "X", proceeds = "7000.00", proceeds_account = "1000", gain_loss_account = "7100" }
|
|
|
|
# Hand check (worked without the code): the runs carried 6,000.00. Held
|
|
# through Jun 15: 5,000.00 + 1,000.00 x 15/30 = 5,500.00, so 500.00 was
|
|
# posted past the disposal day. The disposal entry: Dr accumulated
|
|
# depreciation 6,000.00, Dr bank 7,000.00 / Cr equipment 12,000.00, Cr
|
|
# depreciation expense 500.00, Cr gain 500.00 (13,000.00 a side). Book
|
|
# value 6,500.00; gain 7,000.00 - 6,500.00 = 500.00.
|
|
[[expect]]
|
|
query = "disposal"
|
|
asset = "X"
|
|
|
|
[expect.values]
|
|
final_depreciation = "0.00"
|
|
catch_up_depreciation = "0.00"
|
|
excess_depreciation = "500.00"
|
|
accumulated = "6000.00"
|
|
book_value = "6500.00"
|
|
gain_loss = "500.00"
|
|
|
|
[[expect]]
|
|
query = "balances"
|
|
as_of = "2026-06-30"
|
|
|
|
[expect.values]
|
|
"1510" = "0.00"
|
|
"6200" = "5500.00"
|
|
"7100" = "500.00"
|