VDB Function (OpenOffice Calc)
Calculate variable declining-balance depreciation in Apache OpenOffice VDB. Compare straight-line switching, fractional periods and no-switch examples.
Verification status: Eight ordinary reference formulas were recalculated in Apache OpenOffice 4.1.16 on Linux x86-64, Build 9816, through generated native ODF and GUI hard recalculation. Saved identities, inputs and results were checked. How formula examples are checked
Quick answer: =VDB(1000;0;5;0;1) returned 400 in the tested Apache OpenOffice 4.1.16 build.
Availability and version history
- Introduced: First release not established; documented by OpenOffice.org 3.3.
- Supported in: Apache OpenOffice 4.1.16; this is a verified release, not a final supported version.
- Scope: Desktop Calc, English function names and semicolon-separated formulas.
- Checked: October 14, 2026. Eight ordinary reference formulas were recalculated from generated ODF in 4.1.16 on Linux x86-64, Build 9816. Source and independent arithmetic were checked.
What VDB returns
VDB returns depreciation over a time interval measured from the start of an asset’s life. By default it compares declining-balance charges with a straight-line amount and switches when straight-line is larger. The optional NoSwitch flag disables that switch. Release implementation.
Syntax and arguments
=VDB(Cost;Salvage;Life;Start;End[;Factor[;NoSwitch]])
- Cost, Salvage: original cost and intended residual value; use 0≤Salvage≤Cost.
- Life: useful life in consistent period units.
- Start, End: interval positions measured from 0, with 0≤Start≤End≤Life.
- Factor: optional declining-balance factor, default 2.
- NoSwitch: optional FALSE; TRUE retains declining-balance depreciation without the straight-line switch.
Eight reproducible examples
The native column contains saved 4.1.16 results; independent references use high-precision arithmetic and the stated source rules. Values are shown to twelve decimal places where needed.
| Formula | Native 4.1.16 result | Independent reference |
|---|---|---|
=VDB(1000;0;5;0;1) |
400 |
400 |
=VDB(1000;0;5;1;2) |
240 |
240 |
=VDB(1000;0;5;2;3) |
144 |
144 |
=VDB(1000;0;5;3;4) |
108 |
108 |
=VDB(1000;0;5;4;5) |
108 |
108 |
=VDB(1000;0;5;0;5) |
1000 |
1000 |
=VDB(1000;0;5;3;4;2;1) |
86.4 |
86.4 |
=VDB(1000;0;5;.5;1.5) |
320 |
320 |
Practical worksheet
For cost 1000, salvage 0 and life 5, the default successive full-period charges are 400, 240, 144, 108 and 108. Their sum is 1000. At the start of the fourth year, book value is 216; spreading that over two remaining years gives 108, larger than the declining-balance amount 86.4.
That is why VDB(1000;0;5;3;4) gives 108 while VDB(1000;0;5;3;4;2;1) gives 86.4. Start and End are elapsed positions: 3 to 4 means the fourth year, not the third payment of a loan.
Advanced interpretation and checks
The complete interval from 0 through 5 gives 1000, matching the sum of the five default charges. Fractional positions are allowed: the tested interval 0.5 through 1.5 gives 320 for this asset. Its first half-year charge is 200, followed by the stated continuing declining-balance calculation.
The retained implementation has a special adjustment when a fractional start lies at or beyond half the useful life and Factor>1. Do not generalize the early fractional example into a universal rule that any VDB interval is simply a weighted sum of displayed annual rows. Later fractional-start cases were not executed here.
Boundaries and troubleshooting
The source checks negative Start, End<Start, End>Life, negative Cost, Salvage>Cost and nonpositive Factor. Use a positive Life and nonnegative Salvage even where the wrapper’s checks are less explicit. The tested cases use an ordinary five-period asset and no invalid inputs.
Factor and Life must use the same period convention. VDB does not decide which depreciation method is permitted for a tax return or financial report. Keep the method choice, residual value and useful life documented separately from the arithmetic result. Rounding each yearly entry prematurely can also prevent a displayed schedule from reconciling exactly.
Related functions
Official evidence and checking scope
The generated ODF produced the informational load warning “Not all attributes could be read.” The sheet was hard-recalculated and saved separately. All eight ordinary function identities, inputs and results were reconciled; a stale SUM cache changed from 999999 to 3 and an uncached SUM returned 7. This establishes the stated examples, not every workbook style or invalid input. Other explanatory identities are independent calculations. The authoring-tool XLSX was not executed in OpenOffice, and its preview values are not the native results reported here.