Help
Complete reference for the Per%Sense financial calculator.
1. Introduction
What is Per%Sense?
Per%Sense is a tool for economic analysis. Its three worksheets are so flexible and general in their format that almost any financial question you can imagine fits logically and neatly into one of them.
Per%Sense is a completely flexible fill-in-the-blank calculator. Your job is to place the numbers you know in appropriate rows and columns of one of Per%Sense's worksheets. Per%Sense determines when you have provided sufficient information to solve the problem and fills in the answers automatically.
Your input numbers are hard data, displayed on a white background. Per%Sense's computed output is soft data, displayed on a green background. Soft data is erased and recomputed each time you make a change.
What Does Per%Sense Do?
Every economic decision involves the trade-off of costs and benefits over time. Per%Sense reduces complex cash flows at different times to common terms so they can be compared directly.
Applications include:
- Analyzing annuities and other payment structures
- Valuing legal claims for damages
- Financial planning
- Investment analysis and internal rate of return (IRR)
- Comparison of business options — which is the best deal?
- Deciding whether to lease or to purchase
Per%Sense also handles structured loans with advanced features: multiple balloon payments, interest-only periods, fixed principal targets, skipped payments, and combinations of monthly, weekly, and quarterly payments on the same loan.
Quick Start
- From the welcome screen, click one of the three worksheet buttons.
- Enter the values you know into the white cells. Leave the unknown(s) blank.
- Click Calculate (on the Mortgage screen, Calculate Row or Calculate All).
- Read your answers from the green cells.
To change which value is computed, clear a green cell and fill in the one that was blank before. Per%Sense automatically figures out which values to solve for based on what you've entered.
The Fill-in-the-Blank Concept
Every Per%Sense worksheet works like an equation where you choose which variable to solve for simply by leaving that cell blank. For example, on the Mortgage screen:
- Enter Price, Rate, Years, % Down → Per%Sense computes Monthly Total
- Enter Monthly Total, Rate, Years, Cash Available → Per%Sense computes Price
- Either way, you fill in what you know and read what you don't
This principle extends to all three worksheets. On the Present Value screen, you can compute a present value (enter rate, read value) or compute an IRR (enter value, read rate). The interface adapts to your question.
Hardening Values
Sometimes you want to use a computed (green) value as the starting point for a new calculation. Hardening converts a green output cell into a white input cell, preserving its value so it won't be recalculated.
To harden a cell: double-click it, or select it and press H. The cell background changes from green to white.
This is essential for multi-step problems. For example: first compute a monthly payment, then harden it, change the loan term, and compute a balloon amount.
2. Quick Tour
How Per%Sense fills in blanks
Behind the scenes, Per%Sense analyzes the combination of data you have entered, determines what quantities can be computed, selects the appropriate algorithms, and routes the answers to the appropriate cells. You have only to read the output.
Each worksheet has a set of related variables connected by financial formulas. When you provide enough variables to determine the rest, Per%Sense solves the system and displays the results. If you change one input, all dependent outputs update.
Flexibility and reversibility
The same screen can answer many different questions depending on which cells you fill in. Consider the Mortgage screen:
- "What will my payments be?" — Fill in Price, leave Monthly Total blank
- "How much house can I afford?" — Fill in Monthly Total, leave Price blank
- "How big a balloon do I need?" — Fill in both Price and Monthly Total, leave Balloon Amount blank
This reversibility applies to all worksheets. On the Present Value screen, entering a rate computes present value; leaving the rate blank computes an IRR.
The Mortgage screen at a glance
The Mortgage screen is designed for choosing among different loan options. Each row models a single, self-contained calculation. Fill in most cells and leave one or two blank for Per%Sense to compute.
Key operations:
- Calculate Row — Compute the selected row
- Calculate All — Compute every row that has data
- Compare APR — Compare APRs of two rows to determine which loan is better
- What-If Table — Auto-generate rows by varying one or two columns
The Amortization screen at a glance
The Amortization screen creates detailed loan schedules showing every payment split into interest and principal. Enter loan parameters at the top, click Calculate, and the full table appears below.
Advanced options enable complex loan structures: adjustable rates, balloon payments, prepayments, interest-only periods, and more.
The Present Value screen at a glance
The Present Value screen values any combination of cash flows at a single point in time. Applications include financial planning, legal settlements, annuity valuation, pension analysis, and IRR computation.
Enter single payments (lump sums) on the left, periodic payment series on the right, set a rate and as-of date, and the present value of each payment appears in the Value column.
APR overview
APR (Annual Percentage Rate) is a standard measure of the true cost of borrowing, defined by the Federal Truth In Lending Act. It takes both points and the base interest rate into account.
When no points are charged, the APR equals the quoted loan rate. When points are part of the loan, the APR rises above the base rate because points are an upfront cost spread over the loan's life.
The quoted APR is the full-term APR — the APR that corresponds to holding the loan for its full scheduled duration. If you pay off the loan early, the effective APR is higher because the upfront points cost is spread over fewer years.
Exporting schedules
From the Amortization screen, click Export CSV to download the full amortization schedule as a comma-separated file. This can be opened in Excel or any spreadsheet application.
The CSV includes columns for payment number, date, payment amount, interest, principal, remaining balance, and cumulative interest to date.
The Mortgage and Present Value screens have their own Export CSV buttons that save the current grid. Any screen can also be printed (browser Print) — the toolbar and navigation are dropped automatically so only the worksheet appears on the page.
Keyboard shortcuts and conveniences
A few conveniences speed up data entry:
- C — calculates the current worksheet at its smallest scope: on the Mortgage screen it runs Calculate Row for the selected row only; on the Amortization and Present Value screens it runs Calculate. Skipped while focus is in the actuarial CSV box or a settings dropdown, and while a modal or the tour is open.
- Enter — moves to the next field (and Shift+Enter to the previous one). Enter does not calculate; use C or the Calculate button when you are ready for an answer.
- T — typed in any date field, fills in today's date.
- H — hardens the selected mortgage cell (converts a computed green cell back to a white input); double-clicking a green cell does the same.
- Dates format themselves — type just the digits and the
MM/DD/YYYY slashes are inserted as you go. Fields also auto-advance whenever there is only one way to read what you typed: a month of 2–9 fills to 02/–09/ and jumps to the day; a day of 4–9 fills to 04/–09/ and jumps to the year; and a two-digit year completes to 20XX — unless you start with 19 or 20, in which case it waits for all four digits so you can type any year (e.g. a 1962 date of birth or 2019). For an ambiguous month or day that won't advance on its own (e.g. 1, which could become 1, 10, 11 or 12), just press / to commit it — 1 then / becomes 01/ and moves to the day.
- Automatic save — your worksheet is saved in the browser as you work and restored the next time you open Per%Sense.
- Invalid dates are caught early — when you leave a date field that holds an impossible or incomplete date (e.g.
02/30, a month above 12, or a missing year), it is outlined in red with a tooltip explaining why, and a calculation won't run until it is corrected.
- If a calculation fails, the field(s) at fault are outlined in red so you can find the problem at a glance.
- The moon/sun button in the header toggles light and dark mode. The Take the Tour button on the welcome screen replays the first-run walkthrough.
3. Mortgage Screen
Overview
The Mortgage screen is designed for choosing among different loan options:
- How much house can you afford on your budget?
- Which loan has the lowest APR?
- Should you choose a larger down payment or a larger monthly payment?
- Is it worthwhile to pay more points to obtain a lower base interest rate?
- What is the effect of a balloon payment on your monthly payments?
- How do different loan scenarios compare side by side?
Each row in the grid is a separate, self-contained calculation. You can have multiple rows active for comparison.
The Mortgage Grid
| Column | Description |
| Price | Total purchase price of the property. |
| Points | One-time bank charge at settlement. 1.0 points = 1% of the amount borrowed, paid to the bank at closing. |
| % Down | Down payment as a percentage of the purchase price. This column, Cash Required, and Amount Borrowed are grouped — fill in exactly one of the three. |
| Cash Required | Sum of the down payment plus the value of points. Generally the bulk of money needed at closing (title insurance and other fees are additional). |
| Amt Borrowed | The loan amount, equal to the purchase price minus the down payment. |
| Years | Duration of the mortgage (e.g. 15, 20, or 30 years). |
| Loan Rate | Quoted annual interest rate from the bank. Equals APR only when Points = 0. |
| Mo Tax+Ins | Monthly real estate taxes plus homeowner's insurance (annual amount ÷ 12). Most banks require insurance and often escrow both tax and insurance into your monthly bill. |
| Monthly Total | Total monthly mortgage payment including principal, interest, taxes, and insurance. |
| Balloon Yrs | Number of years from settlement until a balloon payment is due (optional). |
| Balloon Amt | Lump sum balloon payment amount (optional). If only Balloon Yrs is specified, the amount is computed. |
| APR | Computed Annual Percentage Rate. Always an output (green) cell. |
Calculation rules
- Fill in Price or Monthly Total — whichever is blank gets computed.
- Fill in exactly one of: % Down, Cash Required, or Amt Borrowed.
- All other required cells (Points, Years, Loan Rate) must be filled by you.
- The Balloon area is optional. If both Yrs and Amount are filled, the monthly payment adjusts accordingly. If only Yrs is filled and both Price and Monthly Total are known, the Balloon Amount is computed.
The Mortgage screen always uses a 360-day calendar and is not affected by Computational Settings.
Using the Mortgage Screen
- Click Mortgage Worksheet from the welcome screen.
- Click on a row to select it (the selected row is highlighted).
- Enter values into the white cells. Leave one or two cells blank.
- Click Calculate Row (or Calculate All to compute every row that has data).
- Computed values appear in green. APR is computed automatically when sufficient data is present.
APR and Loan Comparisons
To compare two mortgages:
- Enter data for both loans on two separate rows.
- Click Calculate All so both rows have computed APRs.
- Click Compare APR.
Per%Sense compares the full-term APRs and reports which loan is better. When the loans differ in points, one loan may be better for short holding periods and the other for long periods. Per%Sense identifies the crossover point.
In general: if you plan to sell the house soon, prefer lower points. If you plan to stay long-term, prefer the lower base rate (even with higher points).
"What-If" Tables
Sometimes it's helpful to see the results of several different financing scenarios:
- What if the down payment is increased?
- How does the monthly payment depend on the loan rate?
- What is the impact of different balloon amounts?
To generate a what-if table:
- Calculate a starting row first.
- With that row selected, click What-If Table.
- Choose the column(s) to vary, the increment, and how many lines to generate.
- Click Generate. New rows are created with varied values and automatically calculated.
You can vary two columns simultaneously for a combinatorial table. For example, varying both Years and Rate produces (N+1) × (M+1) rows covering all combinations.
Canadian Mortgages
Canadian mortgages differ from American mortgages in the way the rate is quoted. Although payments are made monthly, interest is compounded semi-annually. If you select CAN in the Default Payments Per Year computational setting, rates will be interpreted as Canadian rates.
Mortgage Examples
Note on numeric values: The Mortgage screen uses
continuous-compounding interest (matching the original DOS source), while
the textbook discrete-compounding formula taught in finance courses gives
slightly different numbers. The values shown below match what the program
actually produces. For a $100,000 loan at 8.5% over 30 years the
difference is about $2/month. See
docs/discrepancies.md §1 for details. The Amortization screen
uses discrete compounding and will produce a slightly different
schedule for the same nominal inputs.
Example 1: Computing Monthly Payments
You purchase a house for $200,000 and take a 20-year mortgage at 8% with 2 points. You put down 20% and expect monthly taxes and costs to be $200. What is the total amount due monthly?
Type these into a row, leave the rest blank: Price = 200,000, Points = 2.00, % Down = 20, Years = 20, Loan Rate = 8.0000, Tax+Ins = 200. (Don't type Cash Required, Amt Borrowed, or Monthly Total — those will be computed.)
Then press Calculate Row:
Price Points %Down Cash Req Amt Borrow Yrs Rate Tax+Ins Monthly Total
200,000.00 2.0000 20.0000 43,200.00 160,000.00 20 8.0000 200.00 1,538.30
Cash Required = $40,000 down payment + $3,200 in points = $43,200. The
$1,538.30 monthly total is the principal+interest payment of $1,338.30
plus the $200 tax/insurance.
Example 2: How Much House Can You Afford?
You have $56,000 from the sale of your condominium, and you can make payments of $1,650/month including taxes and insurance of $200. The bank charges 1.5 points and 8.5% interest on a 30-year mortgage.
Type these into a row, leave the rest blank: Points = 1.5, Cash Required = 56,000, Years = 30, Loan Rate = 8.5000, Tax+Ins = 200, Monthly Total = 1,650. (Don't type Price, % Down, or Amt Borrowed — those will be computed.)
Then press Calculate Row:
Price Points %Down Cash Req Amt Borrow Yrs Rate Tax+Ins Monthly Total
241,749.12 1.5000 21.9944 56,000.00 188,577.78 30 8.5000 200.00 1,650.00
This illustrates the fill-in-the-blank concept: by entering Monthly Total and leaving Price blank, Per%Sense solves the problem in reverse.
Note: the computed cells in the actual program appear with an accent border, green tint, and italic text. To run this example a second time with different inputs, click Clear Row first, or double-click a green cell to harden it as input.
Example 3: Balloon Payment Amounts
You want to buy a house for $280,000. With 20% down, the bank provides 30-year financing at 8.25% with 2.5 points. Including $300/month for tax and insurance, you want to keep payments below $1,600 by scheduling an 8-year balloon. How much does the balloon need to be?
Type these into a row, leave the rest blank: Price = 280,000, Points = 2.5, % Down = 20, Years = 30, Loan Rate = 8.25, Tax+Ins = 300, Monthly Total = 1,600, Balloon Yrs = 8. (Leave Balloon Amt blank — that's what we're solving for.)
Then press Calculate Row:
Price Points %Down Cash Req Amt Borrow Yrs Rate Tax+Ins Monthly Bal Yrs Bal Amt
280,000.00 2.5000 20.0000 61,600.00 224,000.00 30 8.2500 300.00 1,600.00 8 98,372.47
A balloon of about $98,372 in 8 years reduces your monthly payments to $1,600. If you round the balloon up to a tidier $100,000, the monthly drops slightly to $1,593.67 (re-run with Balloon Amt = 100,000 and leave Monthly Total blank).
Example 4: 30-Year Payments with 15-Year Balloon
An 8.1% mortgage for $240,000 is amortized at 30 years but capped with a 15-year balloon. What are the payments and balloon?
Step 1: Compute the 30-year monthly payment. Type Price = 240,000, % Down = 0, Years = 30, Loan Rate = 8.1. Press Calculate Row.
Price Points %Down Cash Req Amt Borrow Yrs Rate Monthly
240,000.00 0 0 0.00 240,000.00 30 8.1000 1,777.79
Step 2: Double-click the computed Monthly Total cell to harden it (converts the green/computed value into a typed input). Then change Years from 30 to 15 and type Balloon Yrs = 15. Both must be filled in — the engine needs Balloon Yrs to know there's a balloon to solve for. Leave Balloon Amt blank. Press Calculate Row again.
Price Points %Down Cash Req Amt Borrow Yrs Rate Monthly Bal Yrs Bal Amt
240,000.00 0 0 0.00 240,000.00 15 8.1000 1,777.79 15 184,912.27
This demonstrates the harden feature: you use a computed value as input for a follow-up calculation. The balloon of ~$184,912 in 15 years lets the borrower keep the lower 30-year payment but settle the remaining principal at the halfway point.
Example 5: Low Points or Low Base Rate?
Which is better: an 8.1% mortgage with 3 points, or an 8.5% mortgage with 1 point?
Enter data for both mortgages on two separate rows. The price and down payment are irrelevant to this comparison, but Years must be the same on both rows.
Row 1: Price = 100,000, % Down = 0, Years = 30, Loan Rate = 8.1, Points = 3.
Row 2: Price = 100,000, % Down = 0, Years = 30, Loan Rate = 8.5, Points = 1.
Click Calculate All to compute both rows, then click Compare APR:
Mortgage A: Loan Rate 8.1000%, 3 points, full-term APR = 8.4257%
Mortgage B: Loan Rate 8.5000%, 1 point, full-term APR = 8.6094%
APRs cross at 6 years, 10 months (effective APR at crossover = 8.6984%).
If you hold the mortgage longer than that, Mortgage A is the better deal;
shorter, Mortgage B wins because the upfront point cost on A hasn't amortized.
Rule of thumb: choose lower points if you plan to be in the house less than ~7 years; choose the lower base rate otherwise.
Example 6: What-If Table
How does the monthly payment on a $100,000 mortgage depend on the interest rate, from 7% to 9%?
Start with one row: Price=100,000, %Down=0, Years=30, Rate=7.0000. Calculate it (Monthly = $665.30).
With that row selected, click What-If Table. Set Column = Loan Rate, Increment = 0.25, Lines = 8.
Rate Monthly Total
7.0000 665.30
7.2500 682.18
7.5000 699.21
7.7500 716.41
8.0000 733.76
8.2500 751.27
8.5000 768.91
8.7500 786.70
9.0000 804.62
Example 7: Double What-If
How does the monthly payment on a $100,000 mortgage depend on both interest rate (7% to 8.5%) and loan duration (15 to 30 years)?
Fill in the source row first with everything Calc needs in order to produce a Monthly Total:
Price = 100,000, % Down = 0,
Years = 30, Loan Rate = 7.0000.
(Optionally click Calc — you should see Monthly Total = $665.30 on this row.) The What-If
expansion carries every filled-in field of the source row over to each generated row, so if Price
or % Down is blank up front the generated rows have no way to compute Monthly Total.
With that row selected, click What-If Table. Set Column 1 = Loan Rate, Increment = 0.25, Lines = 6. Open the second variable section: Column 2 = Years, Increment = -5, Lines = 3.
This generates (6+1) × (3+1) = 28 rows covering all combinations of rate and duration.
Yrs Rate Monthly
30 7.0000 665.30
25 7.0000 706.78
20 7.0000 775.30
15 7.0000 898.83
30 7.2500 682.18
...and so on for all 28 combinations
4. Amortization Screen
Overview
The Amortization screen is a flexible loan analysis tool. Use it to create amortization schedules or compute payment amounts for complex, structured loans.
An amortization table (or schedule) is a list of loan payments in which each payment is divided into interest and principal parts. Per%Sense amortization tables also include cumulative interest to date and the remaining balance.
Basic Loan Information
| Column | Description |
| Amt Borrowed | The principal amount of the loan. |
| Loan Date | Settlement date / date the loan originates. |
| Rate % | Quoted annual interest rate. |
| 1st Pmt Date | Date of the first regular payment.
Optional — if left blank, Per%Sense defaults it to one
period after the loan date (e.g. monthly loans get a first payment one
month after settlement). |
| # Periods | Total number of payments. Can be left blank if the Last Pmt Date is supplied; Per%Sense derives it. |
| Last Pmt Date | Date of the final regular payment. Computed automatically from First Pmt Date + # Periods, but you can also supply it directly and leave # Periods blank. |
| Pmts/Yr | Payment frequency: 1=annual, 2=semi-annual, 4=quarterly, 12=monthly, 24=semi-monthly, 26=biweekly, 52=weekly. |
| Pmt Amount | Regular payment amount. Leave blank to have Per%Sense compute it from the loan principal, rate, and term. |
| Points | Discount points charged at settlement, entered as a number of points (1 point = 1% of Amt Borrowed). Used only to compute the APR — it does not affect the payment schedule. Leave 0 for no points. |
| APR % | Computed Annual Percentage Rate including the cost of points, reported as an effective annual yield. Computed automatically (output, green cell) whenever Points is non-zero; equals the loan rate when Points is 0. |
| Basis | Day-count basis: 360 (standard), 365 (actual days), or 365/360 (hybrid). |
Field-Presence Behavior
Per%Sense automatically derives the missing field when you supply
enough of the others. The Amortization screen recognizes these
combinations:
- Loan Date + Pmts/Yr (no 1st Pmt Date) → 1st Pmt Date is set to Loan Date + 1 period.
- 1st Pmt Date + # Periods → Last Pmt Date is computed.
- 1st Pmt Date + Last Pmt Date → # Periods is computed.
- Amount + Rate + # Periods (Payment blank) → Payment is computed exactly using the annuity formula.
- Amount + Payment + # Periods (Rate blank) → Rate is solved via Newton iteration.
- Rate + Payment + # Periods + 1st Pmt Date (Amount blank) → Loan Amount is solved.
Using the Amortization Screen
- Enter Amount Borrowed, Loan Date, Rate, 1st Payment Date, # Periods, and Pmts/Year.
- Leave Payment Amount blank to have it computed — or, instead, leave Amount Borrowed or Rate blank, and Per%Sense back-solves whichever one you omitted (see Examples 1d–1f). Leaving both Amount and Rate blank is the term-derivation shortcut of Example 1c.
- Click Calculate.
- The schedule table appears below, with the computed payment shown in the summary bar.
Payoff / Balance
After generating a schedule, enter any date in the Payoff as of field. Per%Sense calculates the remaining loan balance at that date. This is useful for determining how much you'd owe if you sold the house or refinanced.
CSV Export
Click Export CSV to download the full amortization schedule as a comma-separated file for use in Excel or other spreadsheet applications.
Advanced Options
The Advanced Options section (click to expand) supports complex loan structures. Filling in any Advanced field automatically switches Per%Sense into fancy mode, which runs a period-by-period engine that honors all the options below.
Additional Periodic Payments
Extra payments beyond the regular payment amount. For example, an extra payment each December to accelerate the loan payoff. Specify start date, frequency, and amount, then bound the series in one of two ways: give a stop date, or give a number of payments — the extra payments end at whichever limit is reached. (Supplying both is allowed; the series ends at whichever comes first.)
Balloon Payments
One-time lump sum payments applied to principal. Some mortgages are structured with lower monthly payments and a balloon that makes up the difference. The computational setting "Balloon includes regular payment" controls whether the regular payment is also due on a balloon date.
Rate/Payment Adjustments
For adjustable-rate mortgages (ARMs): change the interest rate and/or payment amount on specific dates during the loan.
Moratorium
An interest-only period where payments cover only interest with no principal reduction. Enter the date when principal repayment resumes.
Target Principal Reduction
Force a minimum principal reduction each period. If the regular payment doesn't meet the target, Per%Sense adjusts the payment upward.
Skip Months
Specify months when no payment is made, using a compact notation like "6-8,12" (skip June through August and December).
Input Validation
Per%Sense rejects loan configurations that are internally inconsistent
before generating a schedule, so you don't silently get a wrong answer.
The Amortization screen surfaces these errors:
| Error | Trigger |
| "first date must not be after last date" | 1st Pmt Date is later than Last Pmt Date |
| "two rate adjustments on the same day" | Two ARM adjustments scheduled for the same date |
| "rate adjustment cannot precede the loan" | Adjustment date is on or before the Loan Date |
| "rate adjustment cannot fall on or after the last payment" | Adjustment date is on or after the Last Pmt Date |
| "balloon cannot precede the first regular payment" | Balloon date is before the 1st Pmt Date |
| "balloon cannot precede the first principal repayment (moratorium)" | Balloon scheduled before the moratorium ends |
| "principal repayment cannot precede the first regular payment (moratorium)" | Moratorium first-repay date is before the 1st Pmt Date |
| "principal reduction target is too high" | Target principal reduction exceeds Amount ÷ # Periods (i.e. mathematically unreachable) |
| "cannot solve for loan amount with target principal reduction" | Trying to back-solve for the loan amount while a target reduction is in force (over-determined) |
| "Amount Borrowed is blank and could not be solved (…)" | Amount Borrowed left blank for the back-solver, but the screen is missing the Rate, Pmt Amount, term, or first-payment date the solve needs (see Example 1e) |
| "Rate is blank and could not be solved (…)" | Rate left blank for the back-solver, but the screen is missing the Amount, Pmt Amount, or term the solve needs (see Example 1f) |
| "Prepayment row N: <field> is required" | An Additional Periodic Payments row is missing its Start Date, Amount, or Pmts/Yr — the row is named so you can see which one to fix |
| "Balloon row N: <field> is required" | A Balloon row is missing its Date or Amount |
A Rate/Payment Adjustment row may now also be a date-only entry (no new Rate, no new Pmt Amount). Per%Sense treats that as AO7 — re-amortize at current rate: it re-solves the regular payment over the remaining term at the unchanged rate. That matters when a future balloon (or drift from a prior adjustment) means the running payment no longer amortizes the loan cleanly.
Pennies and Rounding
Per%Sense amortization schedules are accurate to the penny. Rounding discrepancies that accumulate over the life of the loan are absorbed in the final payment, which may differ slightly from the regular payment amount.
Settings That Affect Amortization
Several Computational Settings affect amortization calculations:
- Basis days per year (360 or 365-day computations)
- 1st interest prepaid at settlement (YES or NO)
- Interest paid in arrears or advance
- Treatment of interest on interest (USA Rule or Actuarial)
- Balloon includes regular payment (YES or NO)
- Rule of 78s (basic mode only)
- Exact method (precise but non-standard)
Amortization Examples
Example 1: Simple Amortization Table
Create an amortization schedule for a $100,000 loan at 8%, 30 years, monthly payments starting 03/01/2024, loan date 02/12/2024. Settings: 360-day basis, prepaid interest YES.
Enter Amount=100,000, Loan Date=02/12/2024, Rate=8.0000, 1st Pmt Date=03/01/2024, Periods=360, Pmts/Yr=12. Leave Payment blank.
Per%Sense computes Payment = $733.76.
The first period is short: the loan closes on 02/12/2024 but the first regular payment isn't until 03/01/2024 (19 days later under the 360-day basis, which uses 30-day months). Pmt #1's interest portion is therefore $422.22 rather than the full $666.67 a standard month would accrue, so a slightly larger share goes to principal in the very first payment. Total interest over the 30-year schedule is $161,499.77.
Example 1b: Omitting the First Payment Date
Same $100,000 loan as Example 1, but you only know the loan date and the payment frequency — the first payment date wasn't explicitly written down.
Enter Amount=100,000, Loan Date=02/12/2024, Rate=8.0000, Periods=360, Pmts/Yr=12. Leave 1st Pmt Date blank.
Per%Sense automatically defaults 1st Pmt Date to one period after the loan date (03/12/2024). The schedule and computed payment match Example 1 except for the small calendar shift on the first period.
Example 1c: Deriving Term from First and Last Payment Dates
You know your loan starts 02/01/2024, ends 01/01/2054, and pays monthly — how many payments is that?
Enter 1st Pmt Date=02/01/2024, Last Pmt Date=01/01/2054, Pmts/Yr=12. Leave # Periods, Amount, and Rate blank.
Per%Sense fills in # Periods = 360. This is a term-derivation shortcut: when Amount and Rate are both blank, Per%Sense skips schedule generation entirely and just answers the dates-to-payments question. To get a full schedule alongside the derived term, fill in Amount and Rate as well.
Example 1d: Computing the Payment (Solve Payment)
You're borrowing $250,000 at 6% over 30 years (monthly). What's the payment?
Enter Amount=250,000, Loan Date=01/01/2024, Rate=6.0000, 1st Pmt Date=02/01/2024, Periods=360, Pmts/Yr=12. Leave Pmt Amount blank.
Per%Sense computes Pmt Amount = $1,498.88 using the closed-form annuity formula. This is an exact solve, not just an estimate.
(For a quick sanity check: solving for the loan amount from this payment, rate, and term recovers the original $250,000 within a few cents — see Example 1e.)
Example 1e: Computing the Loan Amount (Solve Amount)
A lender quotes a payment of $1,498.88 per month at 6% over 30 years (monthly). How much does that payment let you borrow?
Enter Rate=6.0000, Loan Date=01/01/2024, 1st Pmt Date=02/01/2024, Periods=360, Pmts/Yr=12, Pmt Amount=1,498.88. Leave Amount Borrowed blank.
Per%Sense back-solves Amount Borrowed = $250,000.62 — essentially the $250,000 of Example 1d. The 62¢ excess is an artifact of the quoted payment having been rounded to whole cents; an un-rounded payment recovers exactly $250,000. The solved amount appears in the Amount Borrowed cell with the computed-value highlight, and a full schedule is generated alongside it.
Solving for the amount needs Rate, Pmt Amount, # Periods, Pmts/Yr, and a first-payment date. As in Example 1b, the 1st Pmt Date may be left blank — Per%Sense defaults it to one period after the Loan Date before solving.
Example 1f: Computing the Loan Rate (Solve Rate)
You borrowed $250,000 over 30 years (monthly) and your payment is $1,498.88. What interest rate are you actually paying?
Enter Amount=250,000, Loan Date=01/01/2024, 1st Pmt Date=02/01/2024, Periods=360, Pmts/Yr=12, Pmt Amount=1,498.88. Leave Rate blank.
Per%Sense back-solves Rate = 6.0000% by Newton iteration on the schedule residual — the rate that makes this payment stream amortize the loan exactly. This is the Amortization-screen counterpart of an IRR question, and the inverse of Examples 1d and 1e.
Solving for the rate needs Amount, Pmt Amount, Pmts/Yr, and the term. The term may be given either as # Periods or as a Last Pmt Date — when only the Last Pmt Date is supplied, Per%Sense derives the period count first (the Example 1c derivation), then solves the rate.
Example 1g: Deriving the Term from a Known Payment (Solve # Periods)
You took out a $200,000 loan at 6% with monthly payments of $1,199.10, but you no longer remember how long the loan runs. How many payments is it?
Enter Amount=200,000, Loan Date=01/01/2025, Rate=6.0000, Pmts/Yr=12, Pmt Amount=1,199.10. Leave both # Periods and Last Pmt Date blank.
Per%Sense fills in # Periods = 360 (a 30-year loan) and the matching Last Pmt Date. It uses a closed-form formula — given the amount, rate and payment, the number of installments follows directly — so this is instant, no iteration.
If the payment is too small to cover even the first month's interest, the loan can never amortize; Per%Sense reports that rather than running forever. This is the plain-loan case — deriving the term while Advanced Options are in use is not supported (supply # Periods or a Last Pmt Date there).
Example 2: Computing APR with Points
Same loan as Example 1, but with 2 points. What is the APR?
Enter Amount=100,000, Loan Date=02/12/2024, Rate=8.0000, 1st Pmt Date=03/01/2024, Periods=360, Pmts/Yr=12, Points=2.0000.
Per%Sense fills in the APR field. The points are an upfront cost: the borrower effectively receives only $98,000 (loan amount minus the $2,000 in points) but still repays the full 360-payment schedule, so the true annual cost of the borrowing — the APR — comes out above the 8% note rate. The APR is the rate at which the present value of all the scheduled payments equals that net $98,000 (the same idea as Present Value Example 5).
Enter Points=0 and the APR field simply reports the note rate expressed as a yield — a useful baseline to compare against.
Example 3: Weekly Payments
$100,000 at 8%, weekly payments, 30 years (1,560 payments). Settings: 365-day basis.
Enter Amount=100,000, Loan Date=01/01/2024, Rate=8.0000, Pmts/Yr=52, Periods=1560, Basis=365. (Leave 1st Pmt Date and Payment blank — 1st Pmt Date defaults to one week after Loan Date; Payment is computed.)
Per%Sense computes Weekly payment ≈ $168.79. Switching to the 365-day basis matters here: under 360 the per-period rate uses a 30/360 day count, which subtly shifts the answer for sub-monthly frequencies.
Example 4: Accelerating with More Frequent Payments
Compare monthly vs. biweekly payments on a $100,000, 8%, 30-year loan.
Both runs share: Amount=100,000, Loan Date=01/01/2024, Rate=8.0000, Basis=360. Leave 1st Pmt Date and Payment blank.
Monthly run: Pmts/Yr=12, Periods=360. Payment ≈ $733.76. Total interest over 30 years ≈ $164,156.
Biweekly run: Pmts/Yr=26, Periods=780 (30 years × 26 biweekly periods). Re-run; the per-payment amount drops but the total interest is meaningfully less than the monthly run, because more frequent compounding reduces the average outstanding principal across the term.
Example 5: Interest-Only Loan with Balloon
$100,000 at 8%, monthly interest-only payments, terminated with a 5-year balloon.
Enter Amount=100,000, Loan Date=01/01/2024, Rate=8.0000, 1st Pmt Date=02/01/2024, Pmts/Yr=12, Periods=60, Pmt Amount=666.67 (= $100,000 × 8% / 12). Then expand Advanced Options and under Balloons add a row with Date=01/01/2029 and Amount=100,000.
The fixed Payment of $666.67 covers exactly the monthly interest, so no principal is reduced — each schedule row shows $666.67 interest and $0 principal, and the balance stays at $100,000 for all 60 months. The balloon at month 60 then settles the full principal.
Examples 6-18: Advanced Features (Summary)
| # | Title | Feature demonstrated | Status |
| 6 | Adjustable Rate Loan | Rate changes on specific dates | Implemented — an adjustment that gives only a new rate now re-solves the payment over the remaining term (see Advanced Solver Examples below) |
| 7 | Including Balloon Payments | Scheduled lump sum payments | Implemented |
| 8 | Balloon Unknown | Computing the balloon amount needed | Implemented — leave a balloon row's Amount blank to solve the "target balloon" (see Advanced Solver Examples below) |
| 9 | Calculating the Completion Date | Leave # Periods blank, supply Last Pmt Date | Implemented — both the dates-to-periods case (Example 1c) and the solve-term-from-payment case (Example 1g) |
| 10 | Negative Amortization | Payment less than interest | Implemented (engine tracks principal increasing each period) |
| 11 | Neg Amort: Fixed Low Rate | Initial low payment, rising balance | Implemented |
| 12 | 30-Year Terminated at 12 | Balloon terminates early | Implemented |
| 13 | Principal Moratorium | Interest-only start period | Implemented |
| 14 | Targeted Principal Reduction | Minimum principal per payment | Implemented (with input validation: target must not exceed Amount ÷ # Periods) |
| 15 | Interest Plus Principal | Fixed principal + variable interest | Implemented via Target option |
| 16 | 13 Annual Payments | Extra payment each year to accelerate | Implemented via Prepayments |
| 17 | Skipping a Regular Payment | Skip Months or balloon of $0 with "includes regular = YES" | Implemented |
| 18 | Computing the Loan Rate | Leave Rate blank, fill in Payment | Implemented — worked through in Example 1f above (Newton iteration on the schedule residual) |
All of these features are wired up in the API and engine and can be
exercised by entering the inputs on the Amortization screen and clicking
Calculate. The advanced field-presence solvers — where you
leave a field blank for the engine to compute — are worked through
in the examples that follow.
Advanced Solver Example A: Target Balloon (Solve the Balloon Amount)
You want a 5-year loan on $200,000 at 6%, but you'd like to keep the monthly payment at the 30-year level of $1,199.10 and settle the rest with a balloon. What balloon clears the loan at year 5?
Enter Amount=200,000, Loan Date=01/01/2025, Rate=6.0000, 1st Pmt Date=02/01/2025, # Periods=60, Pmts/Yr=12, Pmt Amount=1,199.10. Expand Advanced Options, and under Balloon Payments add a row with Date=01/01/2030 and Amount left blank.
A balloon row with a date but no amount is a target balloon: Per%Sense solves the amount that drives the loan balance to exactly zero. Here it computes a balloon of roughly $186,000 — the principal still outstanding after five years of the smaller 30-year payment.
Use this whenever you know when the loan must be retired but not the lump sum it takes.
Advanced Solver Example B: ARM Rate Change with No New Payment
A $200,000, 30-year, 6% loan has a rate adjustment to 9% after five years. You know the new rate but not the new payment — what should it become?
Enter the base loan (Amount=200,000, Rate=6.0000, 1st Pmt Date=02/01/2024, # Periods=360, Pmts/Yr=12; leave Pmt Amount blank so the engine computes the starting payment). Expand Advanced Options, and under Rate/Payment Adjustments add a row with Date=01/01/2029, new Rate=9.0000, and Amount left blank.
When an adjustment supplies a new rate but no new payment, Per%Sense re-amortizes the remaining balance at the new rate over the periods that are left — the payment steps up so the loan still finishes on schedule. Without this, the old payment would no longer amortize the loan and a residual balance would be left at the end.
(The reverse — a new payment with no new rate — is a straight recast: the new payment simply applies at the unchanged rate.)
Advanced Solver Example C: Unknown Prepayment Amount
You have a five-year loan that doesn't fully amortize at its regular payment. How large must a monthly extra payment be to retire it on time?
Enter the loan (for example Amount=200,000, Rate=6.0000, # Periods=60, Pmts/Yr=12, Pmt Amount=1,199.10 — the 30-year payment, which leaves a large balance at year 5). Expand Advanced Options, and under Additional Periodic Payments add a series with a Start Date, Pmts/Yr=12, a Stop Date (or a Number of Payments), and Amount left blank.
Per%Sense solves the per-payment extra amount that drives the balance to zero by the end of the schedule. The series must be bounded — give either a Stop Date or a Number of Payments — so the count of extra payments is known.
Advanced Solver Example D: Unknown Prepayment Duration
You can afford an extra $500 every month on a $200,000, 30-year, 6% loan. How soon does that pay the loan off?
Enter the base loan, then under Additional Periodic Payments add a series with a Start Date, Pmts/Yr=12, Amount=500, and both the Stop Date and the Number of Payments left blank.
With the amount known but no bound on the series, Per%Sense solves the duration: it runs the extra payments until the loan retires and reports how many were needed. A $500/month prepayment retires the 30-year loan in roughly 15 years instead of 30 — the schedule simply ends early, and an advisory notes the payment number at which the loan was retired.
5. Present Value Screen
Overview
The Present Value screen is a very flexible tool for working with the time value of money. Applications include financial planning, structured legal settlements, valuation of legal claims, annuities, pensions, and internal rates of return (IRR).
As with all Per%Sense screens, flexibility comes from choosing which cells to fill in:
- Present value: List payments, fill in date and rate, read the Value.
- IRR: List payments, fill in the Value, leave Rate blank to be computed.
- Future value: Set the as-of date in the future instead of the past.
Present or Future Value: the Concept
The promise of one dollar next year has a certain value today — certainly less than one dollar. If you trust the promise, the present value is the amount you'd need to invest today for it to grow to one dollar by next year.
Conversely, a dollar received in the past has a value of more than one dollar today: its present value is the amount it would have grown into, had it been invested with compound interest.
You can think of present value as a loan: How big a loan can I take out today if I want to pay it back with this cash flow? Or as a bank account: How big must my balance be to make these withdrawals, emptying the account with the last withdrawal?
Future value is simply the bank balance on a future date after scheduled deposits. To adjust present dollars for inflation, put the inflation rate in the Rate field and set the as-of date in the future.
Payment Grids
Single Payments (Lump Sums)
| Column | Description |
| Date | Date of the one-time payment. Leave blank to back-solve from Amount + Value (PV-2). |
| Amount | Dollar amount of the payment. Leave blank to back-solve from Date + Value (PV-1). |
| Value | Present/future value at the as-of date. Per%Sense computes it from Date + Amount; or, on a row-level back-solve, type a target Value and leave Date or Amount blank to have the engine solve the missing field. |
Multiple rows can be entered. Each payment is valued independently. Field-presence dispatch: exactly two of the three columns ({Date, Amount, Value}) must be filled — whichever one is blank is the field Per%Sense solves for.
Periodic Payments
| Column | Description |
| From Date | Date of the first payment in the series. Leave blank to back-solve from To Date + Amount + Value (PV-6). |
| Through | Date of the last payment in the series. Leave blank to back-solve from From Date + Amount + Value (PV-5). |
| Per/Yr | Payment frequency (12=monthly, 52=weekly, etc.). |
| Amount | Dollar amount of each payment. Leave blank to back-solve from From + Through + Value (PV-4). |
| COLA % | Annual cost-of-living adjustment (optional). Payments increase by this percentage each year. |
| Value | Present/future value of the entire series. Per%Sense computes it from From + Through + Amount; or type a target Value and leave exactly one of those three blank to back-solve it. |
Field-presence dispatch: exactly three of the four columns ({From, Through, Amount, Value}) must be filled — whichever one is blank is the field Per%Sense solves for. Pmts/Yr is always required.
True Rate, Loan Rate, and Yield
Interest rates are quoted differently for loans than for savings. An eight-percent savings account pays slightly more than an eight-percent loan because of compounding within each period.
| Rate Type | Use for | Description |
| True Rate | Present value, savings | Continuously compounded rate. The mathematically "pure" rate. |
| Loan Rate | Loans, mortgages | Discretely compounded rate (depends on payments per year). |
| Yield | Savings, bonds | Actual interest earned on one dollar during one year, after compounding. |
These are equivalent representations of the same quantity — like pounds and kilograms:
True Rate 8.0% = Monthly Loan Rate 8.0267% = Yield 8.3287%
The Rate Type dropdown selects which format you're entering. Bond yields and Canadian rates are loan rates for semi-annual compounding.
COLAs (Cost of Living Adjustments)
Annuities, pensions, and structured settlements often provide for increases tied to the cost of living. Use the COLA column for present value computations involving rising (or falling) payments.
COLA values are interpreted as yields (not compounding rates), following convention. A blank COLA column is the same as 0%.
The COLA escalation month setting controls when the adjustment is applied: on the anniversary of the first payment, in a specific month, or continuously with each payment.
IRR (Internal Rate of Return)
IRR is the number you want to know when you ask "How well did my investment do?" It is the true measure of investment performance over time.
IRR is computed on the Present Value screen by entering payments and their value, then leaving the Rate blank. Per%Sense solves for the rate that makes the present value equal the stated amount.
Why not a separate IRR screen? Because the calculations are the same. "What rate makes the present value of these payments equal $100,000?" is precisely an IRR calculation. Conversely, "How much should I bid for this instrument to achieve a 10% IRR?" is a present value calculation.
Variable Rate Mode
The regular Present Value screen uses a single interest rate. The Variable Rate Schedule section (expand it under the grids) allows different rates for different time periods.
Common uses:
- IRS tax interest — rates change by quarter
- Legal damages — statutory rates that vary over time
- Forward-rate analysis — valuing cash flows under a piecewise yield curve
How to use it
Fill in the rate-schedule grid under the Lump Sum and Periodic blocks. Row 1's date cell is fixed (it says "—") because Row 1 is the starting rate — the rate in effect at the beginning of your computation. Rows 2 and 3 each name a date on which a new rate kicks in. Within each row, you can enter the rate as True Rate, Loan Rate, or Yield (use any one column — True Rate takes precedence if you fill more than one). Loan Rate is converted to True Rate assuming monthly compounding.
As soon as any row in the schedule is populated, Per%Sense switches into variable-rate mode for the entire screen: the As-of Rate field above is ignored, and every cash flow is discounted through the schedule.
Worked example
IRS tax interest scenario: $100,000 owed on 01/01/2024, paid 3 years later on 01/01/2027, with rates of 5% in 2024, 7% in 2025, and 10% in 2026.
- As-of Date = 01/01/2024.
- One lump sum: Date = 01/01/2027, Amount = 100,000.
- Rate schedule — Row 1 (starting rate): True Rate = 5.0000. Row 2: Date = 01/01/2025, True Rate = 7.0000. Row 3: Date = 01/01/2026, True Rate = 10.0000.
Per%Sense computes Sum Value ≈ $80,251.88. (Cross-check: the integral of the rate over the 3-year span is 0.05 + 0.07 + 0.10 = 0.22, so PV = $100,000 × e−0.22.)
Limitations
- No backward calc. Every row (lump sum or periodic) must be fully specified — the engine doesn't solve for an unknown amount, date, or rate in VR mode. Matches DOS Per%Sense Pro's VR screen: "rates cannot be the target of a computation."
- No IRR. IRR is by definition a single rate; the concept doesn't fit variable-rate mode.
- No SIMPLE interest. DOS exposed a SIMPLE/COMPOUND toggle for the niche legal-damages case where statute mandates non-compounding interest on past losses. This port assumes COMPOUND. Tracked as a follow-up.
Combining with life contingency
The variable-rate path also supports actuarial weighting: set a Life dropdown on any row and provide a life table + DOB in the Life Contingency section as usual. Each payment is then discounted through the rate schedule and weighted by the survival probability at the payment date. POD (Payment on Death) value is likewise integrated through the schedule rather than a single rate.
The complementarity property still holds: under the same VR schedule, Living-PV + Dead-PV = non-contingent-PV. This combination existed in DOS Per%Sense Pro (compiled with both PVLX and ACTU flags); the Windows port shipped without ACTU and lost it. The web port restores it.
Per-Row Validation
Per%Sense rejects payment-row combinations that can't be solved
mathematically:
| Error | Trigger |
| "specify either date or amount in single payments, line N" | Lump-sum row has only a Value filled in (no Date, no Amount — can't tell which to solve for) |
| "amount cannot be zero on a single payment row, line N" | A lump-sum row supplies Amount = 0 with the other fields blank (the back-solver would divide by zero) |
| "value cannot be zero on a single payment row, line N" | Same with Value = 0 |
| "specify either other date or amount in periodic payments, line N" | Periodic row has only one date supplied (no amount, no other date) |
| "dates are out of order, line N" | Periodic row's From Date is on or after the Through date |
| "too many unknowns" | The screen has both a fully-specified row AND a row with an unknown to solve — choose one mode |
| "insufficient data on screen" | Not enough information to compute or back-solve anything |
These checks fire during the FirstPass step, before any
solver runs. If the screen passes validation, the appropriate forward or
backward calculation is dispatched automatically based on which fields
you left blank.
Over-specified rows are a warning, not an error
Supplying more than a row needs is not rejected. If a lump-sum
row carries all three of Date, Amount, and Value — or a periodic
row carries both dates plus Amount and Value — Per%Sense does not
stop. It treats the extra Value as redundant, recomputes it from the
other fields, and returns a non-fatal warning alongside
the normal result (for example, "single payment row 1 is over-specified
— the supplied Value is redundant and will be recomputed"). This
mirrors DOS Per%Sense, which surfaced the situation as a cancelable
"value already determined by data above" prompt rather than a hard
error.
Present Value Examples
Example 1: Lump Sum Present Value
What is the present value of a promise to pay $10,000 on 1/1/2025, if today is 1/1/2024 and the discount rate is 8%?
Enter As-of Date=01/01/2024, Rate=8.0000. Enter one lump sum: Date=01/01/2025, Amount=10,000.
Present Value ≈ $9,231. The $10,000 next year is worth about $9,231 today at 8% (continuously compounded).
Example 2: Monthly Annuity
What is the present value, as of 01/01/2024, of $1,000 per month for 10 years (through 01/01/2034) at 6%?
Enter As-of Date=01/01/2024, Rate=6.0000, and a periodic payment: From=01/01/2024, Through=01/01/2034, Per/Yr=12, Amount=1,000.
The present value represents how much money you'd need on the as-of date, invested at 6%, to fund all 120 payments.
Example 3: Present Value of a 20-Year Savings Plan
You plan to set aside $500 a month for 20 years. At a 7% discount rate, what is the present value of those deposits today?
Enter As-of Date=01/01/2024, Rate=7.0000. Add one periodic payment: From=01/01/2024, Through=01/01/2044, Per/Yr=12, Amount=500.
Per%Sense computes Sum Value ≈ $64,889. This is the lump sum you'd need today to fund 240 monthly $500 outflows at 7% — equivalent, in present-value terms, to making the deposits yourself.
To get the corresponding future value at 2044 (the bank balance after 20 years of contributions), multiply by the 20-year growth factor: $64,889 × (1 + 0.07/12)240 ≈ $260,463. Per%Sense's PV engine values cash flows as of a single reference date; future-value framings are derived from the PV by the user.
Example 4: Annuity with COLA
A pension pays $2,000/month with a 3% annual cost-of-living adjustment. What is its present value at a 5% discount rate?
Enter As-of Date=01/01/2024, Rate=5.0000. Add a periodic payment: From=01/01/2024, Through=01/01/2054 (30-year horizon, adjust to taste), Per/Yr=12, Amount=2,000, COLA=3.0000. The computed Sum Value is substantially higher than the same annuity with COLA=0, because each year's payments are 3% larger than the prior year's.
Example 5: APR as a Present Value Problem
How is APR actually computed?
An APR is really an IRR in disguise. Consider a loan of $100,000 at 8% with 2 points and monthly payments of $733.76 for 30 years. The borrower actually receives $100,000 - $2,000 (points) = $98,000.
The APR is the rate that makes the present value of 360 monthly payments of $733.76 equal to exactly $98,000. In other words, the APR is the IRR of a $98,000 investment that returns $733.76 per month for 30 years.
Example 5b: Solving for the Rate (IRR) from the Screen
You can buy an instrument for $9,000 today that pays $10,000 in ten years. What rate of return is that?
Enter the As-of Date, add a lump sum (Date ten years out, Amount=10,000), and type the price 9,000 into the Present Value field. Leave the Rate blank.
Per%Sense solves the rate that makes the present value of the payments equal your target — the IRR. The Present Value field doubles as a target box: type a value there and leave Rate blank to solve the rate, and the solved rate appears back in the Rate cell.
The rate is reported in whichever form the Rate Type dropdown is set to (True / Loan / Yield). IRR cannot be solved in Variable Rate mode — a rate schedule fixes the rates, so there is nothing to solve.
Example 5c: Solving for the As-of Date
A future payment is worth a known amount at some discount rate — as of what date is it worth that?
Enter the Rate, add the payment row(s), and type the known value into the Present Value field. Leave the As-of Date blank.
Per%Sense solves the as-of date at which the payments discount to that value and fills it into the As-of Date cell. Exactly one of Rate and As-of Date may be left blank — leaving both blank is ambiguous, and the screen says so.
Examples 6-22: Advanced Present Value (Summary)
| # | Topic |
| 6 | Multiple lump sums at different dates |
| 7 | Mixed lump sums and periodic payments |
| 8 | Backward calculation: find the payment amount |
| 9 | Backward calculation: find the date |
| 10 | IRR of a bond (bond yield to maturity) |
| 11 | Variable rate: IRS underpayment interest |
| 12 | Variable rate: legal prejudgment interest |
| 13 | Simple interest for legal damages |
| 14 | COLA with anniversary escalation |
| 15 | COLA with continuous escalation |
| 16 | Comparing two investment options |
| 17 | Lease vs. purchase analysis |
| 18-20 | Variable rate computations |
| 21 | Simple vs. compound interest comparison |
| 22 | Forward and backward calculations combined |
6. Life Contingency (Actuarial)
Overview
The Life Contingency feature integrates actuarial (mortality) tables with present value calculations. This allows you to compute the present value of payments that are contingent on a person being alive or deceased at the payment date.
This feature was present in the original DOS version of Per%Sense but was never ported to the Windows version. It is essential for:
- Pension valuation — what is a lifetime pension worth today?
- Life annuities — annuity payments that stop at death
- Structured legal settlements — payments contingent on the plaintiff's lifespan
- Wrongful death damages — lost earnings and services over a projected lifetime
- Life insurance analysis — expected payouts weighted by mortality
How It Works
Each lump sum or periodic payment on the Present Value screen has a Life dropdown with seven contingency types. Each one models a real-world product or claim. When a contingency is set, each payment's present value is multiplied by the survival probability — the probability that the contingency condition is met at the payment date, derived from the life table and date of birth.
| Code | Name | Trigger | What it models |
| N | None | Payment always made; no mortality weighting (default). | Fixed-term annuity, bond, mortgage. The straightforward case — mortality is irrelevant. |
| L | Living | Paid only if person 1 is alive at the payment date. | Lifetime pension, life annuity, lost-wages claim, retiree healthcare benefits. Most common contingency. |
| D | Dead | Paid only if person 1 is deceased at the payment date. | Reverse-mortgage payouts to heirs after death; "if my benefactor predeceases me, I receive X"; certain estate or trust distributions; survivor's-benefit-only structures. Not "no contingency" — that's N. |
| 1 | Only 1 Living | Person 1 is alive AND person 2 is deceased. | Spouse's survivor pension that only pays while the spouse is alive after the primary worker has died. Less common but appears in some defined-benefit plans. |
| 2 | Only 2 Living | Person 2 is alive AND person 1 is deceased. | Mirror of 1. Pick whichever assignment matches who you put in Person 1 vs Person 2. |
| E | Either Living | At least one of the two people is alive. | Joint-and-survivor annuity at the full amount (pays as long as anyone is alive). Common in pension plans — the benefit continues to the surviving spouse. |
| B | Both Living | Both people are alive. | Joint-life annuity that stops at first death. Rare standalone, but a useful building block: a typical "100% joint-and-survivor" pension equals B at one rate plus the post-first-death tail at another. |
For two-life contingencies (codes 1, 2, E, B), survival probabilities combine using the independence assumption — this is a simplification, since spouses' mortality is somewhat correlated in practice, but it's the standard convention for pension and structured-settlement work.
What each contingency requires (and how the screen enforces it)
A contingency is only meaningful when the people it refers to are actually set up, so the Present Value screen guides you:
- Two-life options are disabled until Person 2 is configured.
Only 1, Only 2, Either, and Both stay greyed out in every row's Life dropdown until Person 2 has both a life table and a date of birth. With only one person they are degenerate: Either would always pay (identical to None), Only 1 would never pay, and Only 2/Both would silently duplicate Dead/Living. If you clear Person 2, any row using a two-life option resets to None.
- Single-life options need Person 1 and the reference date.
Living and Dead require Person 1's table + date of birth, and every contingency requires the reference date ("Now"). If a row uses a contingency while these are missing, the calculation is blocked with a message naming exactly what to fill in, the Actuarial section opens, and focus jumps to the first missing field. Set the row's Life column back to None if you don't intend a contingency.
Why "Dead" isn't "without contingency"
The most common point of confusion: people read "Dead" and assume it means "ignore mortality." It doesn't — that's None. Dead means the payment requires the person to be deceased by the payment date, which is the survivability complement of Living. The two satisfy a clean identity:
PV(Living) + PV(Dead) = PV(None)
The Lifetime Pension example below makes this concrete: $253,135 (Living) + $144,628 (Dead) = $397,763 (None), to the dollar. If you set Dead expecting "non-contingent" you'll get the complementary value, not the unconditional one.
Setting Up Life Tables
Expand the Life Contingency (Actuarial) section on the Present Value screen. You'll see:
- Person 1 — Select a life table (SSA 2021 Male/Female or custom) and enter the date of birth.
- Person 2 (optional) — Required only for two-life contingencies (Only 1, Only 2, Either, Both).
- Reference Date — The "now" date. Survival probabilities are conditional on being alive at this date.
- Payment on Death (POD) — Optional lump sum payable at the moment of death. Its expected present value is computed automatically.
Built-in Life Tables
Per%Sense includes the SSA 2021 Period Life Table from the U.S. Social Security Administration, with separate male and female tables. These are the standard tables used for pension and legal calculations in the United States.
Custom Life Tables
Select "Custom (paste CSV)" and enter mortality data in the format: age,qx (one per line), where qx is the probability of dying within the year at that age. Example:
0,0.005
1,0.0004
2,0.0003
...
99,0.35
100,1.0
The Mathematics
For a lump sum payment of amount A at date t, the life-contingent present value is:
Value = A × discount(t) × P(alive at t | alive now)
where P(alive at t) is computed from the life table as lx(age_at_t) / lx(age_now).
For periodic payments, each individual payment is computed separately (exact method) and weighted by its survival probability. This is slower than the formula method but necessary because survival probabilities are not constant.
For two-life contingencies, the probabilities combine using the independence assumption:
- Both Living = P1 × P2
- Either Living = 1 - (1-P1)(1-P2)
- Only 1 Living = P1 × (1-P2)
Key Property: Complementarity
For any payment, the Living and Dead contingent values sum to the non-contingent value. This is a useful sanity check: if a $100,000 payment at date T has a Living value of $65,000 and a Dead value of $35,000, the non-contingent value should be $100,000 (before discounting).
Example: Valuing a Lifetime Pension
A 65-year-old male, born 01/01/1959, receives a pension of $2,000/month for life. As of 01/01/2024 (his 65th birthday), what is the present value at a 5% discount rate?
- On the Present Value screen, enter As-of Date = 01/01/2024, Rate = 5.0000.
- Add a periodic payment: From = 01/01/2024, Through = 01/01/2059 (age 100 — 35 years after as-of), Per/Yr = 12, Amount = 2,000.
- Set the Life dropdown to Living.
- Expand Life Contingency. Select SSA 2021 Male, enter DOB = 01/01/1959, and Reference Date = 01/01/2024.
- Click Calculate.
Per%Sense computes Sum Value ≈ $253,135. Without the Living contingency the same 420-payment stream is worth ≈ $397,763, so the mortality weighting trims the pension's PV by about 36% — a 65-year-old won't collect every later payment.
Sanity check (complementarity): switching the Life dropdown to Dead on the same inputs yields ≈ $144,628, and $253,135 + $144,628 = $397,763 matches the non-contingent value to the dollar.
Example: Wrongful Death with Payment on Death
A 40-year-old male, born 01/01/1984, was providing $5,000/month to a household. As of 01/01/2024, the estate claims future lost support through retirement at age 67 (01/01/2051), plus a $50,000 burial cost payable at death. What is the present value at a 4% discount rate?
- Enter As-of Date = 01/01/2024, Rate = 4.0000.
- Add a periodic payment: From = 01/01/2024, Through = 01/01/2051 (age 67), Per/Yr = 12, Amount = 5,000, Life = Living.
- Expand Life Contingency. Select SSA 2021 Male, enter DOB = 01/01/1984, Reference Date = 01/01/2024, and POD = 50,000.
- Click Calculate.
Per%Sense computes Sum Value ≈ $959,540 for the survival-weighted lost-support stream, plus PODValue ≈ $12,617 for the expected present value of the $50,000 burial cost. The POD is much less than $50,000 because most of the probability mass for death falls many years out and is heavily discounted.
7. Computational Settings
Click Settings in the header bar to open the Computational Settings panel. These settings affect how calculations are performed across worksheets. The Mortgage screen always uses 360-day and is not affected by most settings.
Year to Divide Century (obsolete)
Originally, Per%Sense accepted two-digit years (MM/DD/YY) and used this setting to decide whether "57" meant 1957 or 2057. That convention was practical in 1995 but causes silent misparses today — e.g. a Through-date of 5/15/57 on a 30-year horizon gets interpreted as 1957 instead of 2057, producing an "out of order" error or worse, a wrong answer that happens to validate. To remove this trap, every date field now requires a 4-digit year (MM/DD/YYYY). The setting is left in the panel for layout continuity but is disabled and has no effect on parsing.
Default Payments Per Year
By convention, loan rates and savings rates are quoted differently. The conversion between them depends on the number of payments per year. This setting resolves ambiguity when a rate appears without an explicit payments-per-year on the same row.
Options: 1, 2, 3, 4, 6, 12 (default), 24, 26, 52, CAN, DAY.
CAN (Canadian): Canadian Standard Rates are computed as if payments were semi-annual, even when payments are monthly. If selected, rate columns will be labeled as Canadian rates.
DAY (Daily): The daily rate is a true interest rate compounded over one day. Numerically very close to the true rate. Used by most savings accounts and rarely by loans.
COLA Escalation Month
Controls when cost-of-living adjustments are applied to periodic payments:
- Anniversary: Payments increase once a year on the anniversary of the first payment date.
- Specific month (1-12): Payments increase every year in that month (e.g., every June).
- Continuous: Adjustments applied proportionally with each payment (e.g., ~1/4% per month for a 3% annual COLA).
Treatment of Interest on Interest
Applies only to negative amortization — when a payment is less than the accrued interest.
- Actuarial (default): The shortfall (accrued interest minus payment) is added to the outstanding principal balance. Interest then compounds on the larger balance.
- USA Rule: No interest on interest. The shortfall is tracked separately. Two balances are maintained: one that accrues interest (principal) and one that does not (unpaid interest). Payments are applied first against the interest balance, then against principal.
Basis Days Per Year
- 360 (default): All months are treated as 30 days. Standard for loans and bonds. The rules for computing days between dates at month-end are complex but well-defined.
- 365: Actual calendar days divided by 365 or 366. Standard for savings accounts and weekly/biweekly loans. Most "365-day loans" actually use 365-day only for the odd first/last periods, with regular months as 1/12 year.
- 365/360: Actual calendar days divided by 360. A non-standard hybrid used by some banks that slightly overstates interest. APRs are always reported as 365-day when this is selected. Not recommended except for reproducing a specific bank's calculations.
Combining Basis=365 with Exact Method=YES produces true 365-day calculations where each month's interest varies by actual number of days. This is mathematically correct but non-standard — the results look unfamiliar because interest and principal portions vary from month to month.
First Interest Prepaid at Settlement
When a loan closes mid-month with payments due on the 1st:
- YES (default): Interest for the partial month is prepaid at settlement from loan proceeds. The first regular payment covers the next full month.
- NO: The regular payment amount is adjusted slightly to spread the partial month's interest over the loan's life.
Only matters when time between loan date and first payment exceeds one period.
Interest Paid in Advance or Arrears
- Arrears (default): Each payment includes interest for the period just ended. This is the common arrangement.
- Advance: Each payment includes interest for the period to come. Much less common.
Stated Balloon Includes Regular Payment
If a $5,000 balloon is specified on a date when the regular payment is $1,000:
- NO (default): Total payment = $6,000 (balloon is in addition to the regular payment).
- YES: Total payment = $5,000 (balloon replaces the regular payment).
To model skipped payments: enter a balloon of $0 with this set to YES. To model "13th payments" (one extra payment per year): enter a balloon in the regular amount with this set to NO.
Exact Method
- NO (default): Uses a computational shortcut assuming equally-spaced payments. Standard practice for all loan calculations.
- YES: Computes every individual payment separately, accounting for the actual number of days in each month. More precise but slower and produces non-standard results.
The difference is generally a few dollars per $10,000 or a few hundredths of a basis point. Tables generated from the Present Value screen always list individual payments (equivalent to Exact), so the table total may differ slightly from the screen total unless Exact Mode is on.
Rule of 78s
An accounting method that front-loads interest allocation, favoring the lender on early repayment. Payment amounts are not affected — only the split between interest and principal in the schedule.
Available only with basic (non-advanced) amortization. Automatically disabled when Advanced Options are active, because there is no standard for Rule of 78 with balloon payments or rate changes.