id = "depreciation-reversal-before-its-run-is-refused" title = "A depreciation run can't be reversed on a day before its own" rule = "A correction comes after what it corrects: a depreciation run, or a reversal of one, can't be reversed on a day before its own. A run of March reversed on Jan 31 would leave January and February with negative depreciation." status = "CONVENTION" sources = [ "Pacioli 1494, ch. 31", "wanderbooks docs/spec/rules.md B-15 rule 6, B-9: a correction comes after what it corrects (CONVENTION)", ] tags = ["depreciation", "reversal", "refusal", "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" } # March's run (dated Mar 31) reversed on Feb 10: refused, naming its date. [[events]] date = "2026-02-10" description = "Reverse event 5" reverses = 5 refused = "entry_irreversible" # On its own day it is taken. [[events]] date = "2026-03-31" description = "Reverse event 5" reverses = 5 # Hand check (worked without the code): January and February carry # 2,000.00 at February's end, never 1,000.00 (with March's 1,000.00 taken # away on Feb 10); March's end carries 2,000.00 (its run and its reversal # both dated Mar 31). [[expect]] query = "balances" as_of = "2026-02-28" [expect.values] "1510" = "-2000.00" "6200" = "2000.00" [[expect]] query = "balances" as_of = "2026-03-31" [expect.values] "1510" = "-2000.00" "6200" = "2000.00"