Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- LOAN Rate Basis
-
Default All-in tranche rates Allowed All-in tranche rates, Benchmark plus tranche spreads
About this input
Treats grid rates as all-in rates or as spreads added to the visible benchmark.
- LOAN Interest Basis
-
Default Average after mandatory amortization Allowed Beginning balance, Average after mandatory amortization
About this input
Uses beginning debt or the average of beginning and post-mandatory debt, avoiding sweep circularity.
- LOAN Cash Sweep Mode
-
Default Excess cash sweep Allowed No cash sweep, Excess cash sweep
About this input
Turns priority excess-cash paydown off or on.
- LOAN Term Years
-
Unit years Default 5 Range 1 to 7
About this input
Leading years included in outputs; seven annual helper rows remain visible.
- LOAN Opening EBITDA
-
Unit user currency millions Default 200 Range 0.01 to 1000000000
About this input
Synthetic year-one EBITDA used for cash flow and covenant ratios.
- LOAN Annual EBITDA Growth
-
Unit fraction/year Default 0.05 Range -0.95 to 1
About this input
Annual growth applied after year one.
- LOAN Cash Tax Percent EBITDA
-
Unit fraction Default 0.2 Range 0 to 1
About this input
Simplified cash-tax use deducted from EBITDA in CFADS.
- LOAN Capex Percent EBITDA
-
Unit fraction Default 0.1 Range 0 to 1
About this input
Simplified capex use deducted from EBITDA in CFADS.
- LOAN Change NWC Percent EBITDA
-
Unit fraction Default 0.02 Range -1 to 1
About this input
Positive values consume CFADS; negative values release cash.
- LOAN Opening Cash
-
Unit user currency millions Default 50 Range 0 to 1000000000
About this input
Opening liquidity before year-one CFADS and debt service.
- LOAN Minimum Cash
-
Unit user currency millions Default 25 Range 0 to 1000000000
About this input
Cash floor retained before any sweep; must not exceed opening cash.
- LOAN Benchmark Rate Conditional
-
Unit fraction/year Default 0.04 Range 0 to 1
About this input
Added to tranche spreads only in benchmark-plus-spread mode.
- LOAN Cash Sweep Percent Conditional
-
Unit fraction Default 0.75 Range 0 to 1
About this input
Fraction of cash above the minimum applied by priority only when sweep mode is active.
- LOAN Maximum Debt To EBITDA Covenant
-
Unit multiple Default 4.5 Range 0.01 to 100
About this input
Annual leverage ceiling tested on ending total debt.
- LOAN Minimum Interest Coverage Covenant
-
Unit multiple Default 2 Range 0.01 to 100
About this input
Annual EBITDA-to-cash-interest floor.
- LOAN Minimum DSCR Covenant
-
Unit multiple Default 1.2 Range 0.01 to 100
About this input
Annual CFADS divided by cash interest plus mandatory amortization floor.
- Four tranches - rate column contains all-in rates
-
Default 4 rows
About this input
Submit exactly four complete tranches with unique names and unique sweep priorities one through four.
Column Range or allowed values Tranche name Not declared Opening balance 0 to 1000000000 All-in rate or spread 0 to 1 Mandatory amortization 0 to 1 Sweep priority 1 to 4
Outputs
- LOAN Initial Total Debt
-
Unit user currency millions
About this output
Sum of four opening tranche balances.
- LOAN Ending Total Debt
-
Unit user currency millions
About this output
Total debt after the selected term's mandatory amortization and sweeps.
- LOAN Cumulative Mandatory Amortization
-
Unit user currency millions
About this output
Sum of all active-year scheduled amortization by tranche.
- LOAN Cumulative Cash Sweep
-
Unit user currency millions
About this output
Total optional excess cash applied by priority.
- LOAN Cumulative Cash Interest
-
Unit user currency millions
About this output
Sum of active-year cash interest across all tranches.
- LOAN Minimum Interest Coverage
-
Unit multiple
About this output
Minimum active-year EBITDA divided by cash interest.
- LOAN Minimum DSCR
-
Unit multiple
About this output
Minimum active-year CFADS divided by interest plus mandatory amortization.
- LOAN Maximum Debt To EBITDA
-
Unit multiple
About this output
Maximum active-year ending debt divided by EBITDA.
- LOAN Covenant Breach Count
-
Unit years
About this output
Count of active years breaching any entered threshold.
- LOAN First Breach Year
-
Unit year; zero means none
About this output
First active year with any modeled breach, or zero when none.
- LOAN Ending Cash
-
Unit user currency millions
About this output
Cash after active-term CFADS, interest, mandatory amortization, and sweeps.
- Model Status
-
No unit declared
About this output
OK identifies a finite schedule with no modeled breach; CHECK flags threshold breaches; NOT VALID identifies intake or roll-forward failure.
Methodology
Purpose and model boundary
This model rolls four synthetic debt tranches through as many as seven annual periods. It applies mandatory amortization, optional priority cash sweeps, all-in or benchmark-plus-spread interest, an illustrative EBITDA-to-CFADS conversion, and three entered covenant tests. It is a debt-schedule and arithmetic screening model, not a borrowing base, legal covenant interpretation, solvency opinion, credit decision, or financing commitment.
Inputs and units
The three route selectors choose all-in versus benchmark-plus-spread rates, beginning versus average-after-mandatory interest balance, and no sweep versus excess-cash sweep. Term is one through seven whole years. EBITDA, cash, debt balances, and reported debt service are in user-currency millions. Growth, cash taxes, capital expenditure, change in net working capital, tranche rates, mandatory amortization, and sweep percentage are annual fractions. Leverage, interest coverage, and DSCR thresholds are multiples.
The fixed five-column grid contains exactly four tranches: text name, opening balance, all-in rate or spread, mandatory amortization rate, and integer sweep priority. Names and priorities must be unique. Benchmark is active only in benchmark-plus-spread mode, and sweep percentage is active only in excess-cash-sweep mode.
Governing relationships
For year t, EBITDA grows from year one as:
EBITDA_t = opening EBITDA × (1 + growth)^(t-1)
The simplified cash flow available for debt service is:
CFADS_t = EBITDA_t × (1 - cash tax % - capex % - change in NWC %)
For tranche j, let B_j,t be beginning balance, B_j,0 original balance, a_j mandatory amortization rate, and r_j the all-in rate or entered spread. Mandatory principal and post-mandatory balance are:
Mandatory_j,t = min(B_j,t, B_j,0 × a_j)
PostMandatory_j,t = B_j,t - Mandatory_j,t
The active interest rate is r_j in all-in mode and benchmark + r_j in spread mode. Interest uses either B_j,t or (B_j,t + PostMandatory_j,t)/2, according to the selected balance basis. Cash before sweep is:
CashBeforeSweep_t = BeginningCash_t + CFADS_t - total interest_t - total mandatory_t
In sweep mode, the available pool is:
SweepPool_t = max(0, CashBeforeSweep_t - minimum cash) × sweep %
The pool is applied in unique priority order 1 through 4, limited at every priority by the matching post-mandatory balance. Ending cash subtracts the allocated sweep, and each tranche's ending balance subtracts its priority allocation.
Annual covenant measures are:
Debt/EBITDA_t = ending total debt_t / EBITDA_t
Interest coverage_t = EBITDA_t / total interest_t
DSCR_t = CFADS_t / (total interest_t + total mandatory_t)
When a coverage denominator is zero, the workbook returns the disclosed sentinel 9,999 rather than dividing by zero.
Calculation sequence
- Validate routes, active scalar assumptions, the minimum-cash relationship, and four complete unique tranches and priorities.
- Calculate year-specific EBITDA and beginning cash, rolling prior ending cash and tranche balances into the next year.
- Apply original-balance mandatory amortization, choose each tranche's interest rate and balance basis, and calculate cash interest.
- Convert EBITDA to CFADS and calculate cash before sweep.
- Calculate the optional sweep pool and allocate it sequentially by priorities 1 through 4 without taking a tranche below zero.
- Calculate ending debt and cash plus leverage, interest coverage, DSCR, and annual breach flag.
- Aggregate ending debt, cumulative mandatory amortization, sweep, interest, worst covenant values, breach count, first breach year, and ending cash.
- Verify debt roll-forward closure and nonnegative debt/cash, then build the ending-debt and EBITDA chart.
Outputs and interpretation
Headline results show ending debt, cumulative mandatory amortization and sweep, minimum interest coverage and DSCR, maximum debt/EBITDA, and the number of annual breaches. Supporting values include initial debt, cumulative cash interest, first breach year, and ending cash. First breach year is zero when none occurs.
A breach flag is set when any active year has debt/EBITDA above its maximum, interest coverage below its minimum, or DSCR below its minimum. The chart compares the modeled debt paydown path with EBITDA; it does not forecast either value independently of the entered assumptions.
Validation and status logic
The workbook evaluates status in this order:
| Condition | Returned status |
|---|---|
| A route, active scalar, minimum-cash relationship, tranche label/value, unique-name rule, or unique-priority rule fails | NOT VALID: correct loan routes, active assumptions, or four complete unique tranches |
| The linked schedule produces negative debt/cash, a nonnumeric metric, or fails the debt roll-forward closure check | NOT VALID: linked debt schedule produces negative liquidity, debt, or a nonfinite covenant metric |
| At least one active year breaches any entered covenant threshold | CHECK: one or more modeled covenant thresholds are breached |
| None of the preceding conditions applies | OK |
The derived closure requires initial debt minus ending debt minus cumulative mandatory amortization minus cumulative sweep to be within 1e-8 × max(1, initial debt). Input and derived failures take precedence over covenant checks.
Assumptions and limitations
- Mandatory amortization is based on original balance and is limited by current balance.
- The benchmark-plus-spread route applies one benchmark to all four tranches.
- Cash sweeps are discretionary in this model and are excluded from the DSCR denominator.
- The CFADS build is an illustrative EBITDA conversion, not a tax model or three-statement forecast.
- There is no revolver draw, borrowing base, PIK, fee amortization, default interest, prepayment premium, tax shield, collateral, rating, covenant cure, basket, holiday, or legal-document nuance.
- Passing entered thresholds proves only arithmetic compliance with those inputs, not legal compliance, credit quality, liquidity, or solvency.
Restrictions and non-computing states
The request always contains exactly four complete tranches. Names must be nonblank text of at most 40 characters and remain unique after trimming, cleaning, case normalization, and nonbreaking-space removal. Sweep priorities must be the unique integers 1 through 4. Opening balances are nonnegative; tranche rates/spreads and mandatory rates are from 0 through 1. Minimum cash cannot exceed opening cash. A negative linked cash or debt balance, nonfinite covenant measure, or failed debt closure prevents a result.
Errors and warnings
This calculator refuses unknown options, malformed grid shape, blank cells, quoted numerics, and entries outside their allowed ranges before calculation. Workbook NOT VALID distinguishes invalid assumptions/tranches from an invalid roll-forward. Workbook CHECK means the schedule calculated but at least one entered covenant threshold was breached. A connection or calculation-service failure is not a covenant finding or a zero-debt result.
References
Commercial-credit and repayment-capacity context follows the OCC Commercial Credit Handbooks. Cash-flow, leverage, and loan-risk control context follows the FDIC Risk Management Manual of Examination Policies. The workbook independently implements the disclosed arithmetic and embeds no borrower, lender, rating, or transaction data.
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.