Source: https://guthlabs.ai/docs/instruments/declining-balance-double-declining-depreciation/mechanism/

instrument mechanism / verified-with-binding-errata

# Declining Balance / Double-Declining Depreciation mechanism

The inspectable method record for Declining Balance / Double-Declining Depreciation, kept separate from implementation and qualification.

Status: **VERIFIED_WITH_ERRATA**Lifecycle: **verified-with-binding-errata**

## Model scope

The educational-only label is appropriate, but the formula specification needs explicit period units, beginning-book-value indexing, salvage-floor handling, straight-line comparison, input constraints, and rounding rules before implementation can be verified as unambiguous.

- dep_t=book_value_t*rate is ambiguous: standard declining-balance depreciation uses the beginning book value of period t, not the ending book value.

- The formula omits the salvage-value floor. Depreciation must not reduce book value below salvage value, and the final period may require an adjustment.

- The straight-line switch rule is underspecified. Standard practice compares declining-balance depreciation with remaining-book-value straight-line depreciation: (beginning book value - salvage value) / remaining periods, then selects the larger amount without exceeding the depreciable base.

- The formula does not define whether t is zero-based or one-based, nor whether book_value_t means beginning or ending book value.

- No rounding policy or final-period rounding adjustment is specified.

## Units and conventions

- Useful life and depreciation periods are assumed to use the same unit; the vectors below use annual periods unless otherwise stated.

- cost, salvage, and book values are monetary amounts in the same currency.

- The multiplier is dimensionless; rate = multiplier / useful life.

- The standard interpretation is beginning-book-value declining balance, with a switch to remaining-life straight line when straight line is greater than declining balance, subject to the salvage floor.

- A positive integer useful life is required; multiplier is assumed to be 1.5 or 2.0.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "cost": 10000,
    "salvage": 1000,
    "useful_life": 5,
    "multiplier": 2,
    "period_unit": "years",
    "switch_rule": "use the greater of declining-balance and remaining-life straight-line depreciation, capped at salvage"
  },
  "expected_outputs": {
    "rate": 0.4,
    "depreciation": [
      4000,
      2400,
      866.6666666667,
      866.6666666667,
      866.6666666666
    ],
    "ending_book_value": [
      6000,
      3600,
      2733.3333333333,
      1866.6666666666,
      1000
    ]
  },
  "working": "Rate = 2 / 5 = 0.4. Year 1: DB depreciation = 10000 x 0.4 = 4000; ending book value = 10000 - 4000 = 6000. Year 2: DB depreciation = 6000 x 0.4 = 2400; ending book value = 6000 - 2400 = 3600. At the start of Year 3, DB = 3600 x 0.4 = 1440. Remaining-life SL = (3600 - 1000) / 3 = 2600 / 3 = 866.6666666667, so switch to SL. Year 3 ending book value = 3600 - 866.6666666667 = 2733.3333333333. Year 4 depreciation = (2733.3333333333 - 1000) / 2 = 866.6666666667; ending book value = 1866.6666666666. Year 5 depreciation = (1866.6666666666 - 1000) / 1 = 866.6666666666; ending book value = 1000."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

A useful_life input of zero causes division by zero in rate = multiplier/useful_life, producing an undefined rate and invalid schedule. The instrument should reject the input rather than emit numeric results.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/declining-balance-double-declining-depreciation/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/declining-balance-double-declining-depreciation/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/declining-balance-double-declining-depreciation/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
