Mid-Month Convention Present Value Proration for Lease Commencement
Prorate the stub first period when a lease commences mid-month: compute the fractional first-period exponent under an actual-day convention so the opening present value and first interest accrual stay consistent.
Problem Statement Link to this section
Real leases almost never commence on the first day of a clean calendar period, yet the textbook present-value formula quietly assumes they do. A lease that takes possession on the 17th of the month, with its first rent invoice still landing on the first of the following month, has a stub first period shorter than a whole period — and if the opening present value is discounted as though that first payment were a full period away, the opening lease liability is wrong from inception, and every interest accrual and principal split for the rest of the term inherits the error. This page answers one precise question: how do you prorate the fractional first period so the opening present value and the first interest accrual are computed on the same day-count basis and stay consistent? The answer is a fractional first-period exponent driven by the exact number of elapsed days, applied inside the discounted-cash-flow sum that seeds the present value calculation logic and, ultimately, the whole amortization schedule.
Standard Anchor Link to this section
Both frameworks fix the opening measurement at the present value of the lease payments not yet paid, discounted at the rate set at commencement. ASC 842-20-30-1 requires the lessee to measure the lease liability at the present value of the lease payments, and IFRS 16.26 mirrors this — the liability is the present value of the payments discounted at the rate implicit in the lease or, when that is not readily determinable, the incremental borrowing rate. Neither standard prescribes a single day-count convention for the fractional first period; both require that the discounting reflect the actual timing of the payments relative to the commencement date. The practical consequence is that the exponent applied to each payment must measure the real elapsed time from commencement, not an assumed whole number of periods.
The subsequent-measurement rules make the consistency requirement binding. ASC 842-20-35-3 and IFRS 16.36 accrue interest on the opening carrying amount at the same effective rate that seeded the present value. If the opening present value treats the first payment as a fraction of a period away but the schedule then charges a full period of interest before that first payment, the liability will not close to zero at term end. The day-count basis chosen for the present-value exponent and the basis used for the first interest accrual must be the same value, threaded through both calculations.
Formula / Algorithm Specification Link to this section
Let a lease commence on date
where
The opening lease liability discounts every payment at its own fractional exponent using the annual rate
where
Defining the first interest as the compounding of the opening balance over exactly
Annotated Python Snippet Link to this section
The function below computes the opening liability with a genuine stub first period. It measures each payment's fractional exponent in days from the commencement date, discounts with decimal.Decimal to avoid drift, and derives the first interest accrual from the identical stub fraction so the two reconcile. The terminal assertion proves the stub-based first interest matches the discount applied to the first payment.
from decimal import Decimal, ROUND_HALF_UP, getcontext
from datetime import date
getcontext().prec = 28 # audit-grade precision
def prorated_opening_liability(
commencement: date,
payments: list[tuple[date, Decimal]],
annual_rate: Decimal,
basis: int = 365, # actual/365 day count
) -> tuple[Decimal, Decimal]:
"""Opening PV with a fractional first (stub) period.
ASC 842-20-30-1 / IFRS 16.26: discount each payment at its actual
elapsed-day exponent tau_t = (d_t - d_0) / basis, not a whole period.
"""
base = Decimal(1) + annual_rate
pv = Decimal("0")
for pay_date, amount in payments:
assert pay_date >= commencement # no negative day count
tau = Decimal((pay_date - commencement).days) / Decimal(basis)
pv += amount / (base ** tau) # fractional exponent
opening = pv.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
# First interest must use the SAME stub fraction (ASC 842-20-35-3)
tau1 = Decimal((payments[0][0] - commencement).days) / Decimal(basis)
first_interest = (opening * (base ** tau1 - Decimal(1))).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP)
return opening, first_interest
opening, first_interest = prorated_opening_liability(
date(2026, 1, 17), # mid-month possession
[(date(2026, 2, 1), Decimal("10000.00")),
(date(2026, 3, 1), Decimal("10000.00")),
(date(2026, 4, 1), Decimal("10000.00"))],
Decimal("0.06"))
# The stub-period interest accrued to the first payment date must equal the
# discount unwound off the first payment: opening compounds to face over tau_1.
assert first_interest == (opening * ((Decimal("1.06")) ** (
Decimal(15) / Decimal(365)) - Decimal(1))).quantize(Decimal("0.01"),
rounding=ROUND_HALF_UP)
print(f"Opening liability: ${opening} first stub interest: ${first_interest}")
The assertion is the consistency guardrail: the interest accrued over the stub fraction is exactly the discount that the same fraction removed from the first payment. If the schedule instead charged a full month of interest before the first payment, this equality would fail — which is precisely the defect the proration prevents.
Mid-Month Convention vs. Whole-Period Assumption Link to this section
The comparison below isolates what changes when the stub period is prorated versus collapsed into a whole period. The whole-period shortcut is not merely less precise — it seeds a liability that cannot reconcile against the first interest charge.
| Aspect | Whole-period assumption | Mid-month (actual-day) convention |
|---|---|---|
| First-period exponent | Assumed 1 full period | Actual elapsed days over the basis |
| Opening present value | Overstated (payment discounted too far) | True value at the commencement date |
| First interest accrual | Full periodic rate on the opening balance | Opening balance compounded over the stub fraction |
| PV and interest consistency | Break — schedule drifts off zero | Reconcile on the same day-count basis |
| When acceptable | Only if possession is on the period-start date | Any mid-period commencement |
The failure mode is not the size of the first period in isolation; it is the mismatch between an opening liability computed one way and a first interest charge computed another. Threading one day-count basis through both is the fix.
Gotcha / Failure Mode: Basis Mismatch Between PV and the Schedule Link to this section
The most common way a prorated stub period still fails is a different day-count basis on the two sides. Suppose the present value is discounted on actual/365 but the first interest accrual uses a 30/360 stub fraction — the opening liability and the first interest no longer describe the same interval, and the terminal balance drifts by a few dollars that no rounding plug should be masking.
Debug checklist when a mid-period lease will not close to zero:
- One basis, threaded through. Confirm the same
basisvalue feeds the present-value exponent and the first interest accrual; a hard-coded 365 in one place and 360 in the other is the number-one cause. - Origin is commencement, not the prior payment. Every
must be measured from , not cumulatively from the previous payment date, or floating calendar gaps compound. - Stub fraction below a full period. Assert
; a at or above a full period usually means the commencement date was parsed with a day/month inversion. - Full-period reversion after the stub. Only the first period is fractional; if the day-count logic keeps prorating every period against a 30-day assumption, a 28-day February and a 31-day March will accrue inconsistently. See threshold tuning for materiality for how large a residual may be before it must be reworked rather than absorbed into the final period.
Frequently Asked Questions Link to this section
How do I compute the fractional first-period exponent for a mid-month commencement?
Divide the number of days from the commencement date to the first payment date by the day-count basis: τ₁ = (first payment date − commencement date) ÷ B, where B is 365 for actual/365 or 360 for actual/360 and 30/360. That fraction becomes the exponent on (1 + r) when discounting the first payment. Because it is below a full period, the first payment is discounted less than a whole period, which is what makes the opening present value land on the true commencement-date value.
Why must the present value and the first interest accrual use the same day-count basis?
Because they describe the same interval and must reconcile. The opening present value removes a fractional period of discount from the first payment; the first interest accrual adds that same fractional period of interest back onto the opening balance. If one side uses actual/365 and the other 30/360, the amounts no longer match, and the schedule drifts off a zero terminal balance by an amount no rounding plug should be hiding. Thread a single basis value through both calculations.
Does prorating the stub period change the discount rate used?
No. The annual discount rate is locked at commencement and is unchanged by the proration. Proration only alters the exponent — the fractional number of years each payment is discounted or each period accrues — not the rate itself. The rate implicit in the lease or the incremental borrowing rate stays fixed for the whole term; only the first period's time fraction is less than a whole period.
Related Link to this section
- Present value of CPI-linked variable payments — the sibling topic on which variable payments enter the opening present value and at what index level.
- Present value calculation logic — the parent section that specifies the discounted-cash-flow contract this stub proration plugs into.
- Liability amortization and schedule generation — the framework whose opening balance this fractional first period seeds.