How to Calculate Depreciation Rate for Declining Balance Method
by
Declining Balance Depreciation Rate Calculator
Calculate annual asset write-offs using accelerated depreciation methods.
Calculation Summary
Straight-Line Rate: 0%
Applied DB Rate: 0%
Total Depreciation: $0
Annual Depreciation Schedule
Year
Opening Book Value
Depreciation Expense
Accumulated Depreciation
Closing Book Value
Understanding the Declining Balance Method
The declining balance method is an accelerated depreciation system that records higher depreciation expenses during the earlier years of an asset's life and lower expenses in the later years. This method is often used for assets that lose their value quickly or become obsolete rapidly, such as vehicles, computers, and high-tech equipment.
How to Calculate the Depreciation Rate
To calculate the rate for the declining balance method, you first determine the straight-line depreciation rate and then apply a multiplier (the factor). The formula is:
For example, in the Double Declining Balance Method, the factor is 2. If an asset has a useful life of 5 years, the straight-line rate is 20% (1/5). The double declining rate would be 40% (20% × 2).
Important Rule: The Salvage Value Floor
Under the declining balance method, an asset is never depreciated below its salvage value (also known as residual value). In the final years of an asset's life, the depreciation expense is limited to the amount needed to bring the book value down to the salvage value, even if the calculated rate suggests a higher amount.
Step-by-Step Example
Assume you purchase a server for $10,000 with a $1,000 salvage value and a 4-year life using the double declining balance method (Factor = 2).
Year 1: $10,000 × 50% = $5,000 expense. Book value becomes $5,000.
Year 2: $5,000 × 50% = $2,500 expense. Book value becomes $2,500.
Year 3: $2,500 × 50% = $1,250 expense. Book value becomes $1,250.
Year 4: The calculated expense would be $1,250 × 50% = $625. However, the book value is $1,250 and salvage is $1,000. Therefore, the expense is capped at $250 to reach the salvage value.
function calculateDepreciation() {
var cost = parseFloat(document.getElementById('assetCost').value);
var salvage = parseFloat(document.getElementById('salvageValue').value);
var life = parseInt(document.getElementById('usefulLife').value);
var factor = parseFloat(document.getElementById('depreciationFactor').value);
if (isNaN(cost) || isNaN(salvage) || isNaN(life) || isNaN(factor) || life <= 0 || cost <= salvage) {
alert("Please enter valid numbers. Note: Asset cost must be greater than salvage value.");
return;
}
var slRate = (1 / life);
var dbRate = slRate * factor;
document.getElementById('slRateDisplay').innerText = (slRate * 100).toFixed(2) + "%";
document.getElementById('dbRateDisplay').innerText = (dbRate * 100).toFixed(2) + "%";
var tableBody = document.getElementById('tableBody');
tableBody.innerHTML = "";
var currentBookValue = cost;
var accumulatedDepreciation = 0;
for (var year = 1; year <= life; year++) {
var expense = currentBookValue * dbRate;
// Ensure we don't depreciate below salvage value
if (currentBookValue – expense < salvage) {
expense = currentBookValue – salvage;
}
// If we are already at or below salvage, expense is 0
if (expense < 0) expense = 0;
var openingValue = currentBookValue;
currentBookValue -= expense;
accumulatedDepreciation += expense;
var row = tableBody.insertRow();
row.style.borderBottom = "1px solid #eee";
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.style.padding = "10px";
cell2.style.padding = "10px";
cell3.style.padding = "10px";
cell4.style.padding = "10px";
cell5.style.padding = "10px";
cell1.innerHTML = "Year " + year;
cell2.innerHTML = "$" + openingValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cell3.innerHTML = "$" + expense.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cell4.innerHTML = "$" + accumulatedDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cell5.innerHTML = "$" + currentBookValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
document.getElementById('totalDepDisplay').innerText = "$" + accumulatedDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resultsSummary').style.display = "block";
}