Beginning of Period (Advance)
End of Period (Arrears)
Monthly
Quarterly
Annually
Calculated Rate Implicit in the Lease (Annualized)
0.00%
Understanding the Rate Implicit in the Lease
Under accounting standards such as IFRS 16 and ASC 842, the rate implicit in the lease is the discount rate that balances the present value of lease payments and the unguaranteed residual value with the fair value of the asset plus any initial direct costs incurred by the lessor.
Unlike a standard loan where the interest rate is often stated, the implicit lease rate is "hidden" within the cash flows. It represents the internal rate of return (IRR) for the lessor over the lease term.
Practical Example:
Imagine a company leases a piece of industrial equipment with a Fair Value of 100,000. The lessor spends 2,000 in legal fees to set up the lease. The lessee agrees to pay 2,500 per month for 48 months (at the start of each month), and the estimated Residual Value at the end of 4 years is 15,000.
Using this calculator, you can determine the exact annualized percentage rate the lessor is earning, which the lessee may need for their own balance sheet reporting if that rate is "readily determinable."
Why is this Rate Important?
Lessor Accounting: Used to classify the lease as operating or direct financing/sales-type and to measure interest income.
Lessee Accounting: If the rate is readily determinable, the lessee must use this rate to calculate the Present Value of Lease Payments to record the Right-of-Use (ROU) asset and Lease Liability.
Financial Transparency: It reveals the true cost of financing embedded in a lease agreement.
The Mathematical Logic
The calculation uses an iterative numerical method (specifically a binary search algorithm) to solve for r in the following equation:
Fair Value + Initial Direct Costs = PV(Payments) + PV(Residual Value)
Where PV is calculated as an annuity (either due or ordinary) based on the payment timing selected.
function calculateImplicitRate() {
var fairValue = parseFloat(document.getElementById('assetFairValue').value);
var directCosts = parseFloat(document.getElementById('lessorDirectCosts').value) || 0;
var payment = parseFloat(document.getElementById('leasePayment').value);
var residual = parseFloat(document.getElementById('residualValue').value) || 0;
var periods = parseInt(document.getElementById('totalPeriods').value);
var timing = parseInt(document.getElementById('paymentTiming').value);
var frequency = parseInt(document.getElementById('compoundingFreq').value);
if (isNaN(fairValue) || isNaN(payment) || isNaN(periods) || periods <= 0) {
alert("Please enter valid numerical values for Asset Value, Payment, and Lease Term.");
return;
}
var targetValue = fairValue + directCosts;
// Binary search for the periodic rate r
var low = 0.0;
var high = 2.0; // Starting with a max 200% periodic rate
var mid = 0.0;
var iterations = 100;
var tolerance = 0.0000001;
for (var i = 0; i targetValue) {
low = mid;
} else {
high = mid;
}
if (Math.abs(pv – targetValue) < tolerance) break;
}
var annualRate = mid * frequency * 100;
document.getElementById('resultContainer').style.display = 'block';
document.getElementById('implicitRateResult').innerText = annualRate.toFixed(4) + "%";
document.getElementById('periodicRateResult').innerText = "Periodic Rate: " + (mid * 100).toFixed(4) + "% per period";
}
function calculatePV(rate, pmt, n, rv, type) {
if (rate === 0) {
return (pmt * n) + rv;
}
// PV of Annuity
var pvAnnuity = pmt * ((1 – Math.pow(1 + rate, -n)) / rate);
// Adjust for Annuity Due (Payments at beginning)
if (type === 1) {
pvAnnuity *= (1 + rate);
}
// PV of Residual Value
var pvResidual = rv / Math.pow(1 + rate, n);
return pvAnnuity + pvResidual;
}