Documentation/How Tos/Calc: DDB function
From Apache OpenOffice Wiki
< Documentation | How Tos
CALC FUNCTIONS
Depreciation
Payment Streams, Annuities, Loans
Securities
Coupons
Miscellaneous
Contents
DDB
Returns the depreciation of an asset for a given year using the double (or other factor) declining-balance method.
Syntax:
DDB(originalcost; salvagevalue; lifetime; year; factor)
- originalcost: the initial cost of the asset.
- salvagevalue: is the value at the end of the depreciation (sometimes called the salvage value of the asset).
- lifetime: the number of years over which the asset is being depreciated.
- year: the year number for which the depreciation is calculated.
- factor: the factor to set the depreciation rate (2 if omitted).
- To calculate depreciation, DDB uses a fixed rate. When factor = 2 this is the double-declining-balance method (because it is double the straight-line rate that would depreciate the asset to zero). The rate is given by:
- rate = factor / lifetime.
- The depreciation each year is calculated as
- MINIMUM( book_value_at_start_of_year * rate; book_value_at_start_of_year - salvagevalue )
- Thus the asset depreciates at rate until the book value is salvagevalue.
Example:
DDB(12000; 3000; 5; 1)
- returns 4800 in currency units. The rate is 2/5, or 40%. The book value at the start of year 1 is 12000, and 40% of 12000 is 4800.
DDB(12000; 3000; 5; 2)
- returns 2880 in currency units. The book value at the start of year 2 is 12000 - 4800 = 7200, and 40% of 7200 is 2880.
DDB(12000; 3000; 5; 3)
- returns 1320 in currency units. The book value at the start of year 3 is 7200 - 2880 = 4320; and 40% of 4320 is 1728 - but DDB returns only enough depreciation to reduce the book value to the salvage value - that is 4320 - 3000 = 1320.
DDB(12000; 3000; 5; 4)
- returns 0 in currency units. The book value at the start of year 4 is equal to the salvage value; no further depreciation is possible.
Issues:
- Note that this method may not depreciate the asset fully to its salvage value. For example, DDB(1000; 0; 3; 1) + DDB(1000; 0; 3; 2) + DDB(1000; 0; 3; 3) = 962.96, leaving a residual value of 37.04 instead of 0. The VDB function is an alternative which overcomes this.
See Also