IBR Selection: ASC 842 vs IFRS 16 Incremental Borrowing Rate in Python

Compare incremental borrowing rate selection under ASC 842-20-30-3 and IFRS 16.26, including the ASC 842 non-PBE risk-free-rate expedient, with a decimal-precision Python selector.

Problem Statement Link to this section

When the rate implicit in the lease cannot be readily determined — the common case for real estate and equipment, where the lessor's residual assumptions are unknown — both frameworks fall back to the lessee's incremental borrowing rate. The IBR then does double duty: it seeds the present value calculation logic that measures the liability and it drives every period's interest accrual. The definitions look almost identical, but the fine print diverges in ways that change the number you pick: IFRS 16 anchors the rate to a similar economic environment, ASC 842's definition emphasizes a collateralized borrowing over a similar term, and ASC 842 alone offers non-public entities a risk-free-rate practical expedient applied by asset class. This page draws the side-by-side distinction and encodes a selector that returns a defensible IBR under each framework, ending in a terminal assertion. The mechanics of building the rate itself are covered in how to calculate the incremental borrowing rate for ASC 842.

Standard Anchor Link to this section

Both standards prefer the implicit rate and fall back to the IBR, but they define the fallback differently.

  • ASC 842-20-30-3 and the ASC 842 glossary define the incremental borrowing rate as the rate of interest that a lessee would have to pay to borrow on a collateralized basis over a similar term an amount equal to the lease payments in a similar economic environment. The collateralization and similar-term anchors are explicit. ASC 842 additionally grants entities that are not public business entities a practical expedient (ASC 842-20-30-3) to use a risk-free rate — a government bond rate for a period comparable to the lease term — as an accounting policy election made by class of underlying asset. It lowers the discount rate (raising the liability) but removes the cost and judgment of building a full IBR.
  • IFRS 16.26 and the IFRS 16 Appendix A definition describe the IBR as the rate the lessee would have to pay to borrow over a similar term, and with similar security, the funds necessary to obtain an asset of a similar value to the right-of-use asset in a similar economic environment. IFRS 16 has no risk-free-rate expedient; every lessee must estimate a genuine borrowing rate. Its "similar security" and "asset of similar value" language pushes preparers toward a rate reflecting the specific right-of-use asset rather than a generic collateralized borrowing.

Both rates are locked at commencement and change only on a remeasurement trigger. The practical divergence: an IFRS 16 preparer cannot elect the risk-free shortcut, and an ASC 842 non-PBE electing it must apply the election consistently by asset class, not lease by lease.

Formula / Algorithm Specification Link to this section

A constructed IBR is a base reference rate adjusted for term, credit, and collateral:

where is the incremental borrowing rate, is the reference (typically risk-free) rate for a term matching the lease, is the lessee's credit spread, and is an adjustment for the security of the borrowing (negative, since collateral lowers the rate). The ASC 842 non-PBE expedient simply drops the two adjustments, using the risk-free base for the term:

so for any positive credit spread, which is why the expedient produces a larger liability. Under both frameworks the selection follows the same precedence — use the implicit rate if determinable, otherwise the IBR (or, for an electing ASC 842 non-PBE, the risk-free rate for that asset class):

The IFRS 16 branch never reaches ; that row does not exist for an IFRS 16 preparer.

Discount-rate selection precedence under ASC 842 and IFRS 16 Both frameworks first test whether the rate implicit in the lease is readily determinable and use it if so. Otherwise the paths diverge. Under ASC 842, a non-public business entity that has elected the practical expedient for the asset class uses a risk-free rate for a comparable term; every other ASC 842 entity builds a full incremental borrowing rate from a base rate plus a credit spread plus a collateral adjustment. Under IFRS 16 there is no risk-free expedient, so the lessee always builds a full incremental borrowing rate reflecting similar security and an asset of similar value. Implicit rate determinable? Use implicit rate both frameworks Framework? ASC 842 / IFRS 16 ASC 842 non-PBE, class elected risk-free rate r_base(T) Build full IBR base + credit + collateral IFRS 16 full IBR similar security & value yes no
Selection precedence: both frameworks use the implicit rate when determinable. Otherwise ASC 842 offers non-public entities a risk-free-rate expedient elected by asset class, while every other ASC 842 lessee — and every IFRS 16 lessee — builds a full incremental borrowing rate from a base rate, credit spread, and collateral adjustment.

Annotated Python Snippet Link to this section

The selector returns a discount rate under each framework from the same inputs, honoring the ASC 842 non-PBE expedient and refusing it under IFRS 16. Rates are Decimal; the terminal assertion proves the expedient produces a lower rate — and therefore a larger liability — than the built IFRS 16 IBR.

from dataclasses import dataclass
from decimal import Decimal, getcontext

getcontext().prec = 28


@dataclass(frozen=True)
class RateInputs:
    implicit_rate: Decimal | None   # None if not readily determinable
    risk_free: Decimal              # base rate for a comparable term
    credit_spread: Decimal          # lessee credit spread
    collateral_adj: Decimal         # negative: collateral lowers the rate


def select_ibr(inp: RateInputs, framework: str, *,
               is_non_pbe: bool = False, class_elected: bool = False) -> Decimal:
    """Discount rate per ASC 842-20-30-3 or IFRS 16.26."""
    if inp.implicit_rate is not None:           # both prefer the implicit rate
        return inp.implicit_rate
    if framework == "ASC842" and is_non_pbe and class_elected:
        return inp.risk_free                    # risk-free expedient (non-PBE, by class)
    if framework not in ("ASC842", "IFRS16"):
        raise ValueError("framework must be ASC842 or IFRS16")
    # Full IBR: base + credit spread + (negative) collateral adjustment
    return inp.risk_free + inp.credit_spread + inp.collateral_adj


rates = RateInputs(implicit_rate=None, risk_free=Decimal("0.0400"),
                   credit_spread=Decimal("0.0150"), collateral_adj=Decimal("-0.0025"))

rf = select_ibr(rates, "ASC842", is_non_pbe=True, class_elected=True)  # 0.0400
ifrs = select_ibr(rates, "IFRS16")                                     # 0.0525

# The risk-free expedient sits below the built IBR -> larger measured liability
assert rf == Decimal("0.0400") and ifrs == Decimal("0.0525")
assert rf < ifrs

The expedient returns the 4.00% risk-free base while the IFRS 16 branch builds 5.25% (4.00% + 1.50% − 0.25%). Because a lower rate discounts less, the ASC 842 non-PBE electing the expedient reports a larger liability and asset for the same lease — a real trade-off between simplicity and balance-sheet impact that finance leadership signs off by asset class.

Comparison: ASC 842 vs IFRS 16 IBR Link to this section

Dimension ASC 842-20-30-3 IFRS 16.26 / Appendix A
Preferred rate Rate implicit in the lease Rate implicit in the lease
Fallback Incremental borrowing rate Incremental borrowing rate
Collateral emphasis Explicit (collateralized borrowing) Similar security
Amount anchored to Amount equal to the lease payments Funds to obtain a similar-value asset
Term basis Similar term Similar term
Risk-free-rate expedient Available to non-public entities, by asset class Not available
Rate locked at Commencement Commencement

Gotcha / Failure Mode: Applying the Risk-Free Expedient Under IFRS 16 Link to this section

The frequent cross-framework error is porting the ASC 842 risk-free shortcut into an IFRS 16 model, or applying it lease-by-lease instead of by asset class.

Before (WRONG — risk-free shortcut used under IFRS 16, and per-lease):

rate = risk_free_rate                    # WRONG under IFRS 16: no such expedient
# and even under ASC 842, electing per single lease is WRONG

After (correct — expedient is ASC 842 non-PBE only, elected by class):

if framework == "ASC842" and is_non_pbe and asset_class in elected_classes:
    rate = risk_free_rate                # policy election recorded by asset class
else:
    rate = risk_free_rate + credit_spread + collateral_adj   # full IBR

Debug checklist when a discount rate looks wrong:

  1. Confirm the framework allows the expedient. IFRS 16 never does; only ASC 842 non-public business entities may elect it.
  2. Check the election is by asset class, not by lease. ASC 842 requires the risk-free election to apply consistently across a class of underlying assets.
  3. Term-match the base rate. The reference rate must match the lease term, not a generic tenor.
  4. Confirm the collateral adjustment is negative. Collateral lowers the rate; a positive sign inflates it and understates the liability.

Frequently Asked Questions Link to this section

How does the ASC 842 incremental borrowing rate differ from the IFRS 16 one?

The definitions are close but not identical. ASC 842-20-30-3 emphasizes a collateralized borrowing over a similar term for an amount equal to the lease payments in a similar economic environment. IFRS 16.26 and Appendix A frame it as borrowing with similar security, over a similar term, the funds needed to obtain an asset of similar value in a similar economic environment. IFRS 16's "asset of similar value" language ties the rate more tightly to the specific right-of-use asset, while ASC 842 additionally offers a risk-free-rate practical expedient that IFRS 16 does not.

Who can use the risk-free-rate practical expedient, and how?

Only entities that are not public business entities, and only under ASC 842. ASC 842-20-30-3 lets a non-PBE elect to use a risk-free rate — a government bond rate for a period comparable to the lease term — in place of building a full incremental borrowing rate. The election is an accounting policy made by class of underlying asset, so it must be applied consistently across each class rather than chosen lease by lease. IFRS 16 has no equivalent expedient.

Why does the risk-free expedient increase the lease liability?

Because a risk-free rate is lower than a full incremental borrowing rate, which adds a credit spread to that same base. A lower discount rate discounts the future payments less, so the present value — the opening liability and the right-of-use asset — is larger. Electing the expedient therefore trades the cost and judgment of estimating a borrowing rate for a bigger balance-sheet footprint, a trade-off entities weigh by asset class.

Up: Discount Rate Determination & Mapping