ASC 842 lease remeasurement calculator

ASC 842 lease remeasurement calculator: new lease liability, ROU asset adjustment, gain, and the operating or finance lease schedule after a modification.

What it computes

Under ASC 842, a lessee remeasures its lease liability when a modification, a reassessment of the lease term or a purchase option, or certain other events change the remaining lease payments. The calculator computes the new lease liability as the present value of the remaining payments. It adjusts the right-of-use (ROU) asset by the change and recognizes a gain when a liability decrease exceeds the ROU asset's carrying amount. It then produces the period-by-period schedule of interest, liability, ROU amortization and lease cost for an operating or a finance lease.

Method and conventions

The periodic rate is r = discount_rate_annual ÷ periods_per_year, a nominal rate. The remaining term n is remaining_periods, or the last period in payments when it is omitted. Periods not listed carry no payment. Payments are taken to the cent.

  • New lease liability = Σ payment_k ÷ (1 + r)^k for payments in arrears, or ÷ (1 + r)^(k − 1) for payments in advance (payment_timing begin), for k = 1 … n.
  • Liability adjustment = new liability − liability_before.
  • ROU adjustment = max(liability adjustment, −rou_asset_before), so the asset is not reduced below zero (ASC 842-20-35-4). Any excess decrease is the gain recognized.
  • New ROU asset = rou_asset_before + ROU adjustment.

Operating lease. The total remaining lease cost is remaining payments + new ROU asset − new liability. Each period takes total ÷ n, rounded to the cent, as a single straight-line lease cost, and the last period takes what is left. ROU amortization in each period is lease cost − interest.

Finance lease. ROU amortization is new ROU asset ÷ n, straight-line over the remaining lease term. Lease cost is interest + amortization.

Interest is opening liability × r in arrears, or (opening liability − payment) × r in advance, rounded to the cent each period. The final period's interest is the amount that closes the liability at 0.00, and the ROU asset also closes at 0.00. Every row foots, and totals are the sums of the rows. The trace reports the final-period true-up.

The inputs event and discount_rate_updated do not change the arithmetic. They drive the citations and warnings. ASC 842-10-35-5 requires a rate determined at the remeasurement date for modifications and for term or purchase-option reassessments, and keeps the original rate for a resolved contingency or a residual value guarantee change. The calculator warns when the flag contradicts the event. It also warns that an index or rate change alone is not a remeasurement trigger.

Entities and auditors differ on several judgments, and FactLot leaves each to the user. The first is the discount rate itself (the rate implicit in the lease or the incremental borrowing rate). The second is whether payments are in advance or in arrears. The third is whether a shortened term is a partial termination. For modification_shorten_term, the calculator applies only the liability-change adjustment and warns that ASC 842-10-25-13 may require a proportionate reduction of the ROU asset. For finance leases it amortizes over the remaining lease term and warns that useful life applies when ownership transfers or a purchase option is reasonably certain.

Inputs that matter

  • classification: operating (single straight-line cost) or finance (interest plus amortization).
  • payments: remaining payments by period after the event, net of incentives receivable, as amounts per period.
  • remaining_periods: remaining term when the final periods are rent-free.
  • payment_timing: begin (in advance) or end (in arrears, the default).
  • discount_rate_annual: the annual rate applied to the remaining payments, divided by periods_per_year.
  • discount_rate_updated: whether the rate was set at the remeasurement date or kept from commencement.
  • liability_before: carrying amount of the liability just before remeasurement.
  • rou_asset_before: carrying amount of the ROU asset just before remeasurement, after any impairment.
  • event: the trigger, such as modification_extend_term or reassessment_of_term_or_option.

Limits

  • Lessee accounting under ASC 842 only. Lessor accounting, IFRS 16 and GASB 87 are not covered.
  • It does not decide whether a change is a separate contract, whether remeasurement is required, or whether classification changes. The user states the classification and the event.
  • It does not determine the discount rate or allocate consideration between lease and non-lease components.
  • Initial direct costs, new incentives and prepaid rent arising from a modification are not added to the ROU asset beyond the liability change.
  • The partial-termination approach for a shortened term is not applied. Impairment is not tested.
  • Periods are of equal length with one rate throughout. Only the payments given are discounted; variable payments are not estimated. There are no journal entries or disclosure tables.

Worked example

Inputs from FactLot's shared test case "operating lease, term extended, monthly payments in arrears, rate updated", which the TypeScript and Python libraries must both reproduce:

{
  "classification": "operating",
  "payments": [
    {
      "period": 1,
      "amount": 10000
    },
    {
      "period": 2,
      "amount": 10000
    },
    {
      "period": 3,
      "amount": 10000
    },
    {
      "period": 4,
      "amount": 10000
    },
    {
      "period": 5,
      "amount": 10000
    },
    {
      "period": 6,
      "amount": 10000
    },
    {
      "period": 7,
      "amount": 10000
    },
    {
      "period": 8,
      "amount": 10000
    },
    {
      "period": 9,
      "amount": 10000
    },
    {
      "period": 10,
      "amount": 10000
    },
    {
      "period": 11,
      "amount": 10000
    },
    {
      "period": 12,
      "amount": 10000
    },
    {
      "period": 13,
      "amount": 10000
    },
    {
      "period": 14,
      "amount": 10000
    },
    {
      "period": 15,
      "amount": 10000
    },
    {
      "period": 16,
      "amount": 10000
    },
    {
      "period": 17,
      "amount": 10000
    },
    {
      "period": 18,
      "amount": 10000
    },
    {
      "period": 19,
      "amount": 10000
    },
    {
      "period": 20,
      "amount": 10000
    },
    {
      "period": 21,
      "amount": 10000
    },
    {
      "period": 22,
      "amount": 10000
    },
    {
      "period": 23,
      "amount": 10000
    },
    {
      "period": 24,
      "amount": 10000
    }
  ],
  "discount_rate_annual": 0.06,
  "discount_rate_updated": true,
  "liability_before": 200000,
  "rou_asset_before": 190000,
  "event": "modification_extend_term"
}

Result

Result values
ResultValue
classificationoperating
remaining_periods24
periodic_rate0.005
total_remaining_payments240,000
new_lease_liability225,628.66
liability_adjustment25,628.66
rou_asset_adjustment25,628.66
gain_recognized0
new_rou_asset215,628.66
straight_line_lease_cost9,583.33
periodic_amortizationnone
total_interest14,371.34
total_amortization215,628.66
total_lease_cost230,000

Audit trail

Every intermediate value, in order, with the formula that produced it. Formula calc.lease_remeasurement_asc842@2.

Audit trail
StepValueFormula
Eventmodification_extend_termASC 842-10-25-8 and 25-11: modification not accounted for as a separate contract; remeasure and reallocate at the effective date
Remaining term24periods after the remeasurement date
Periodic discount rate0.0056% ÷ 12 (rate updated at remeasurement, ASC 842-10-35-5)
Remaining lease payments$240,000.00Σ payment_k, k = 1..n
New lease liability$225,628.66ASC 842-10-35-4 and 842-20-35-3: Σ payment_k ÷ (1 + r)^k, r = 0.005, payments in arrears
Liability adjustment$25,628.66$225,628.66 − $200,000.00 carrying amount
ROU asset adjustment$25,628.66ASC 842-20-35-4: liability change adjusts the ROU asset, floored at −$190,000.00 so the asset is not reduced below zero
Gain recognized$0.00ASC 842-20-35-4: remeasurement in excess of the ROU asset carrying amount goes to profit or loss
New ROU asset$215,628.66$190,000.00 + $25,628.66
Straight-line lease cost9,583.33 USD/periodASC 842-20-25-6: (remaining payments $240,000.00 + ROU $215,628.66 − liability $225,628.66) ÷ 24
ScheduleASC 842-20-25-6 and 842-20-35-3: interest = opening liability × r; ROU amortization = straight-line cost − interestpayment in arrears: interest accrues on the opening liability
Roundingevery row is in cents and rolls forward exactly: closing liability = opening − payment + interest, closing ROU = opening ROU − amortization; interest is rounded to the cent half away from zero each period; the final period's interest is the amount that closes the liability at 0.00, and its lease cost is total lease cost less the earlier periods, so the ROU asset also closes at 0.00; totals are the sums of the rows
Final-period interest true-up$0.02period 24 interest $49.77 versus $49.75 at opening liability × r: the cents left by rounding each period
Total interest$14,371.34Σ row interest = remaining payments − new lease liability
Total lease cost$230,000.00Σ row lease cost = remaining payments + new ROU asset − new lease liability

Check it in Excel

The lease-accounting-asc842-remeasurement.xlsx workbook recomputes this calculator with live Excel formulas beside FactLot's numbers and a difference column. Its inputs are synthetic; the reconciliation guide explains each sheet.

Use it from an agent or your code

  • MCP: tool calc_lease_remeasurement_asc842 on https://api.factlot.com/mcp (connect a client).
  • Python: factlot.run_tool("calc_lease_remeasurement_asc842", input) runs the same calculation offline (Python SDK).
  • Input schema: every field is described in tools.json.
curl -s https://api.factlot.com/v1/calc/lease_remeasurement_asc842 \
  -H 'content-type: application/json' \
  -d '{"classification":"operating","payments":[{"period":1,"amount":10000},{"period":2,"amount":10000},{"period":3,"amount":10000},{"period":4,"amount":10000},{"period":5,"amount":10000},{"period":6,"amount":10000},{"period":7,"amount":10000},{"period":8,"amount":10000},{"period":9,"amount":10000},{"period":10,"amount":10000},{"period":11,"amount":10000},{"period":12,"amount":10000},{"period":13,"amount":10000},{"period":14,"amount":10000},{"period":15,"amount":10000},{"period":16,"amount":10000},{"period":17,"amount":10000},{"period":18,"amount":10000},{"period":19,"amount":10000},{"period":20,"amount":10000},{"period":21,"amount":10000},{"period":22,"amount":10000},{"period":23,"amount":10000},{"period":24,"amount":10000}],"discount_rate_annual":0.06,"discount_rate_updated":true,"liability_before":200000,"rou_asset_before":190000,"event":"modification_extend_term"}'