13 Additional Financial and Date Calculations
Simple interest, dates, bonds, and depreciation share the Financial panel with TVM and cash flows. Their inputs have different meanings, however: the financial n register can hold days or an asset’s useful life, and i can hold an annual interest rate or a declining-balance factor. Set the required inputs for the particular operation rather than reusing a previous problem’s values by accident.
These operations are available in both modes. The input meanings, date encoding, financial conventions, and formulas below apply to both. RPN readers can follow the stack procedures and worked key sequences. ALG readers should start with section 13.12 for the labeled worksheets, then read the relevant simple-interest, date, bond, or depreciation section for its assumptions and interpretation. ALG preserves the main expression while a worksheet is open.
In the RPN procedures, X is the current stack position labeled S0 in the full-stack view, and Y is S1. Last X and Last Y are separate saved operands. Financial registers and ALG worksheet fields are separate inputs, not names for these stack positions.
13.2 Simple interest on 360- and 365-day bases
13.3 Entering and reading calendar dates
13.4 Adding or subtracting calendar days
13.5 Actual and 30/360 day counts
13.6 Bond inputs and coupon assumptions
How coupon dates and accrued interest are determined
13.7 Calculating bond price and yield
The last coupon period
13.8 Preparing a depreciation calculation
13.9 Straight line and sum of years’ digits
13.10 Declining balance and straight-line crossover
13.11 Fractional useful lives and rounding
13.12 Financial and date worksheets in ALG
13.13 Retained inputs, results, and error recovery
13.1 Controls and preparation
In portrait, swipe left across the top two keyboard rows to show Financial. In landscape, both panels are visible. The operations in this chapter occupy the alternate legends listed in table 13.1. Press the appropriate shift, then the physical main key in the first column. The main function does not run when you select its alternate legend.
| Main key | Orange function |
Blue function |
| i | \(12\div \), covered in chapter 11 |
INT: simple interest |
| PV | PRC: bond price |
YTM: bond yield |
| \(\mathrm {CF}_0\) | DATE: add days |
\(\Delta \)DAYS: two day counts |
| \(\mathrm {CF}_j\) | MDY: month/day/year |
DMY: day/month/year |
| \(\mathrm {N}_j\) | SL: straight line |
SYD: sum of years’ digits |
| NPV | DB: declining balance |
DB\(\to \)SL: declining balance with crossover |
| PMT | AMORT, covered in chapter 11 |
RND: round the current value |
The blue INT on i means simple interest. It is different from orange INT on ENTER in RPN or \(1/x\) in ALG, which truncates a number to its integer part. Identify the physical key as well as the legend when selecting either function.
Use RPN, real mode, a fixed stack of 5, and 600 working digits for the stack examples. Select FIX 4 for money and depreciation, and FIX 6 when reading dates. The preparation procedures in section 3.1 and chapter 5 set these conditions. In RPN, 4 f 7 selects FIX 4 and 6 f 7 selects FIX 6. Each example starts with no pending shift or command and includes a stack clear, f CLEAR, on the \(1/x\) key. Angle units and BEGIN/END payment timing do not affect these tools.
The examples explicitly store every financial input they use. For example, 90 STO n stores 90 regardless of what the next bare n would otherwise do. An unset required register is an error for these additional RPN financial tools, even when its ordinary recall would show zero. Store a required zero explicitly. Unused financial registers do not participate. This differs from a TVM solve’s treatment of unset inputs in chapter 11.
Clearing the stack leaves financial registers and cash flows intact; the explicit stores in each example replace its required inputs. For bank clearing, use section 6.10. Before returning to TVM or cash flows, review the register changes summarized in section 13.13.
13.2 Simple interest on 360- and 365-day bases
Simple interest is proportional to principal, annual rate, and elapsed days; it does not compound interest into principal. The routine requires finite inputs and nonnegative days; it does not apply TVM’s greater-than-minus-100-percent rate restriction. A positive PV reverses the signs of the returned principal and interest. A negative annual rate is also accepted and reverses the interest sign. A zero rate or zero days returns zero interest while retaining the principal result.
Set the three registers in table 13.2, then press g i, selecting its blue INT function. The command reads these registers, not the visible stack number.
| Register | Meaning |
| n | Number of days, nonnegative and finite. A fractional number of days is accepted. |
| i | Annual percentage rate; enter 6 for 6 percent. |
| PV | Signed principal. Enter a negative amount for money initially paid out when the returned principal and interest should be positive. |
Writing \(P=-PV\), \(d=n\), and \(j=i/100\), the two interest amounts are
Both are returned by one command. The main result in X (S0) is \(I_{360}\); Y (S1) holds \(P\); S2 holds \(I_{365}\). Thus + immediately afterward adds the 360-day interest to the returned principal. The financial registers themselves are unchanged.
The traditional name “exact interest” for the 365-day result means that fixed denominator. It does not select a leap-year denominator of 366, an actual/actual year fraction, or a special business-day calendar. Similarly, the 360-day denominator does not turn an actual elapsed-day count into a 30/360 count. Choose the days to store separately; the date-difference command below supplies both kinds of day count.
This three-result operation discards the old stack X and inserts the three results above the old Y. It saves the old stack X and Y in the Last registers; those saved values are not copies of the financial inputs. An unlimited stack must have at least two operands, although their values are not used by the formula. A fixed depth of at least 3 is needed to retain all three results; the chapter’s depth of 5 is sufficient.
Interest on a 90-day advance
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Show the Financial panel. Replace the three required inputs, then calculate:
f CLEAR 90 STO n 6 STO i
1000 +/\(-\) STO PV f CLEAR g i
The results are X = 15.0000, Y = 1,000.0000, and S2 = 14.7945. The checks are \(1000(0.06)(90/360)=15\) and \(1000(0.06)(90/365)=14.7945205479\ldots \). Inspect S2 with the full-stack view if desired, then close it. Press + to obtain 1,015.0000, the principal plus 360-day interest.
13.3 Entering and reading calendar dates
Select date order before entering or calculating with dates. Switching MDY/DMY changes how numbers will be interpreted; it does not rewrite a number already on the stack, in a memory, or still being typed. A number such as 2.032026 changes its interpretation from February 3 to March 2 when the order changes. A value valid in one order can be invalid in the other.
Dates are entered as numbers with a packed decimal layout. The first component is before the decimal point; the second occupies two places after it, followed immediately by the four-digit year. There are no slashes or separate year fields.
| Flag | Select with | Layout |
Example |
| MDY | f \(\mathrm {CF}_j\) | Month.DDYYYY |
2.032026 |
| DMY | g \(\mathrm {CF}_j\) | Day.MMYYYY |
3.022026 |
Include the leading zero in a one-digit second component: February 3 is 2.032026 in MDY, not 2.32026. Use all four year positions, including leading zeros for early years. For example, January 1 of year 1 is 1.010001 in MDY. Leading zeros before the decimal point are unnecessary. Extra trailing zeros leave the numerical value unchanged, but extra nonzero fractional digits do not define a valid date.
The calendar is Gregorian throughout years 1 through 9999. A year divisible by 4 is a leap year, except a century must also be divisible by 400. Thus 2000 has February 29 and 1900 does not. Impossible dates such as February 30, April 31, or February 29 in a non-leap year are rejected rather than rolled into the following month. Year zero, negative dates, and years beyond 9999 are outside the supported range.
Dates have no time of day, time zone, or daylight-saving adjustment. These functions count civil calendar days. They do not select working days, omit weekends or holidays, or report a weekday. The Time family in CONV instead converts fixed durations such as hours and 24-hour days; see section 9.7.
13.4 Adding or subtracting calendar days
The day count must be an integer from \(-3\,652\,058\) through \(3\,652\,058\), and the resulting date must still lie within years 1–9999. The count’s broad numerical range does not permit crossing either calendar endpoint. Adding one day to December 31, 9999, or subtracting one from January 1, year 1, is rejected.
Put the starting date in Y (S1) and the number of days in X (S0), then press f \(\mathrm {CF}_0\), the DATE function. Enter the date first, press ENTER, enter the day count, and select DATE. A positive count moves forward; a negative count moves backward. Zero returns the same date.
Cross a leap day in either direction
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 6, with no pending prefix. For month/day/year, press:
f \(\mathrm {CF}_j\) f CLEAR 2.282024 ENTER 2 f \(\mathrm {CF}_0\)
The result is 3.012024: two days after February 28, 2024 is March 1, because February has 29 days that year.
For a separate example in day/month/year, select DMY and calculate one day before March 1:
g \(\mathrm {CF}_j\) f CLEAR 1.032024 ENTER 1 +/\(-\) f \(\mathrm {CF}_0\)
The result is 29.022024, or February 29, 2024. Financial-register contents are irrelevant to both calculations.
DATE consumes both operands and returns one date in X (display S0), like an ordinary binary operation. The prior day count is saved in Last X and the prior starting date in Last Y. The returned date is encoded in the currently selected order. It can be used immediately as the starting date for another offset: type the new count and select DATE. Typing that new count lifts the returned date into Y.
13.5 Actual and 30/360 day counts
There are several conventions called 30/360. SpicyRPN applies the following specific rule to a first date \((Y_1,M_1,D_1)\) and second date \((Y_2,M_2,D_2)\):
There is no additional February-end adjustment. Do not assume this matches another system merely because its label also says 30/360. For January 31 to February 28, 2023, the rule gives 27, while the actual count is 28. In reverse it gives \(-28\), not \(-27\). The adjusted count is therefore not generally antisymmetric at month-end; reversing the dates and negating the answer need not be equivalent.
For a difference, put the first date in Y (S1) and the second in X (S0), then press g \(\mathrm {CF}_0\), the \(\Delta \)DAYS function. It consumes the two dates and returns the actual elapsed days in X (S0) and the calculator’s 30/360 count in Y (S1). The first date is not counted as an additional day: equal dates return zero. Reversing the dates negates the actual elapsed count. Both input dates are saved in the corresponding Last registers.
Compare a calendar interval with a 30/360 interval
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 6, with no pending prefix. Select MDY and enter January 31 through March 31 of the non-leap year 2023:
f \(\mathrm {CF}_j\) f CLEAR 1.312023 ENTER 3.312023 g \(\mathrm {CF}_0\)
The main result is 59.000000 actual days; the Y detail line shows 60.000000 for 30/360. February contributes 28 calendar days and March contributes 31, while the adjusted calculation treats the interval as two 30-day months. No financial inputs are required.
To use the actual count for simple interest, press STO n after the difference. To use the adjusted count instead, first press \(x\leftrightarrow y\), then STO n. Set the annual rate and signed principal as described in section 13.2. Keep the day-count convention and the interest denominator as two separate choices.
13.6 Bond inputs and coupon assumptions
The bond functions calculate price or yield for a fixed coupon paid semiannually, with redemption at 100 per 100 of face value. They construct the coupon dates from maturity; there are no separate fields for coupon frequency, issue date, first coupon, redemption value, or an irregular coupon schedule. BEGIN/END and the 30/360 result from \(\Delta \)DAYS do not change the bond convention.
For either bond function, enter settlement first, press ENTER, then enter maturity. Settlement goes in Y (S1) and maturity in X (S0). Both follow the selected MDY/DMY order, and maturity must be later than settlement. Table 13.4 identifies the required financial registers. Store the annual coupon percentage itself in PMT, not the amount of one semiannual coupon and not a signed loan payment.
| Operation | Required registers |
Results and update |
| f PV: PRC | PMT = annual coupon percent; i = annual yield percent. |
X (S0) = clean price per 100; Y (S1) = accrued interest per 100. Clean price is also stored in PV. |
| g PV: YTM | PMT = annual coupon percent; PV = positive clean price per 100. |
X (S0) = annual yield percent, also stored in i. |
Coupon percentage must be finite and nonnegative. A zero coupon is valid, but must still be stored in PMT. Yield for PRC must be finite and greater than \(-200\) percent, so its semiannual growth factor is positive; negative yields above that boundary are permitted. YTM requires a finite, strictly positive clean price. The annual yield is quoted as twice the semiannual percentage rate, not as an effective annual rate. Thus yield 6 means 3 percent per half-year; do not divide it by two before storing it in i.
How coupon dates and accrued interest are determined
Coupon dates step backward in six-month intervals anchored to the original maturity date. A maturity on the last day of its month produces month-end coupon dates; August 31, for example, produces February 28 or 29 and earlier August 31 dates without drifting after February. Otherwise the maturity’s day is retained when possible, and shortened to the month’s last day when necessary. The calculation also needs the coupon date at or before settlement, so the schedule must not extend before year 1.
Let \(C=\mathrm {PMT}/2\) be the semiannual coupon per 100, \(E\) the actual days between the surrounding coupon dates, and \(d\) the actual days from settlement to the next coupon. The fraction to the next coupon is \(w=d/E\); accrued interest is \(A=C(1-w)\). On a coupon date, settlement is treated as the start of the next coupon interval: \(w=1\), accrued interest is zero, and the coupon on settlement itself is not a future payment.
Clean price excludes accrued interest. Adding the returned accrued interest gives the full or dirty price per 100 under this model. To scale either amount to a different face value, multiply by that face value divided by 100. The calculator does not add charges, taxes, or other settlement adjustments.
13.7 Calculating bond price and yield
For two or more remaining coupons, the full price is the discounted value of the coupon payments and redemption:
Here \(N\) is the number of future coupon payments constructed from the dates, not the financial n register. PRC returns \(P_{\mathrm {clean}}=P_{\mathrm {dirty}}-A\). It replaces the two date operands with clean price in X (S0) and accrued interest in Y (S1), and stores the clean price in PV. Both original dates become the Last X/Y operands.
Price a bond between coupon dates
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Set a 6 percent annual coupon and yield, select MDY, then enter settlement April 1, 2024 and maturity January 1, 2026:
f CLEAR 6 STO PMT 6 STO i f \(\mathrm {CF}_j\)
f CLEAR 4.012024 ENTER 1.012026 f PV
The main display is 99.9889, the clean price per 100. Y contains accrued interest 1.5000. The surrounding coupon interval is January 1 through July 1, 2024: 182 actual days, with 91 days from settlement to the next coupon. There are four future coupons, so \(w=1/2\), \(C=3\), and \(A=1.5\).
Press + to show the dirty price, 101.4889. The financial PV still holds the unrounded clean price \(99.9889156509\ldots \). Its check is \(100\sqrt {1.03}-1.5\); the dirty price is \(100\sqrt {1.03}\).
To check this price by calculating its yield, continue with the same MDY setting and retained PMT and PV. Clear the stack and re-enter 4.012024 ENTER 1.012026 g PV. YTM displays 6.0000. PV still contains the unrounded clean price even if you added accrued interest on the stack above. Do not store that dirty price in PV for this inverse calculation.
YTM reverses this pricing relationship. It consumes the two dates, returns the annual percentage yield in X (S0), and stores it in i. The coupon register PMT and clean price PV remain unchanged. A one-period yield uses the direct formula below; longer schedules use a numerical solver. The latter has finite convergence tolerances and work limits; 600 working digits do not promise 600 correct yield digits. A failure to find a usable result reports a financial-solver error. YTM provides no user-entered guess or bracket, and does not use an old i as its guess.
Recover an annual yield from a clean price
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. For a 6 percent coupon bond priced at 100, settling on January 1, 2024 and maturing January 1, 2026, press:
f CLEAR 6 STO PMT 100 STO PV f \(\mathrm {CF}_j\)
f CLEAR 1.012024 ENTER 1.012026 g PV
The result is 6.0000, or 6 percent annual yield, and i now contains that result. Four coupons of 3 and redemption of 100 discounted at 3 percent per half-year have value 100 on this coupon date. Accrued interest is zero.
The last coupon period
With exactly one future coupon, SpicyRPN uses simple yield over the remaining fraction of a half-year:
It does not use the fractional compound discount factor \((1+r)^{-w}\) in this case. This distinction can produce a clean price slightly different from 100 between coupon dates even when coupon and yield percentages are equal.
Price the final half-year fraction
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Set PMT and i explicitly, select MDY, and enter April 1 to July 1, 2024:
f CLEAR 6 STO PMT 6 STO i f \(\mathrm {CF}_j\)
f CLEAR 4.012024 ENTER 7.012024 f PV
X displays 99.9778 and Y displays accrued interest 1.5000. Here \(C=3\), \(r=0.03\), and \(w=1/2\), so the clean price is \(103/1.015-1.5=99.9778325123\ldots \).
Before comparing a result with a quoted bond figure, match its coupon frequency, date schedule, yield convention, price basis, and redemption assumption. There is no input for a call date, a call price, irregular first or last coupons, or a different day-count basis. Changing n or FV cannot supply those missing conventions: both registers are ignored by PRC and YTM.
13.8 Preparing a depreciation calculation
Depreciation allocates an asset’s depreciable cost across its useful life. The tools here return one requested year’s amount and the remaining depreciable value after that year. They do not record an asset ledger or change the stored cost as each year is requested.
| Location | Meaning |
| n | Useful life \(L>0\), in years. A fractional life is allowed; see section 13.11. |
| PV | Original cost \(K\), nonnegative and at least the salvage value. Use a positive asset cost, not a signed TVM outlay. |
| FV | Salvage value \(S\geq 0\). Store zero explicitly when no salvage value is required. |
| i | Positive declining-balance factor in percent, needed only for DB and DB\(\to \)SL. Enter 200 for double declining balance, not 2 or 0.2. |
| X (S0) | Requested year \(j\), an integer starting at 1. |
All inputs must be finite. PMT is unused. SL and SYD do not read i; its previous contents cannot affect those two methods. The result in X (S0) is depreciation for year \(j\) alone. Y (S1) is the remaining depreciable value after that year, namely book value minus salvage. Add salvage to that Y result when you need the ending book value itself.
A depreciation command lifts two results above the original year: X holds the amount, Y holds the remaining depreciable value, and S2 still holds \(j\). It preserves both Last registers and all financial inputs. To request another year, type that new year and select the method; clearing the working stack first makes the result positions easier to inspect. A fixed stack of at least 3 retains both results and the year. There is no automatic year increment.
Each request calculates from the original cost and useful life. Asking for year 4 does not require calculating years 1–3 first, and asking for year 2 twice does not depreciate the asset twice. If cost equals salvage, both results are zero. A requested integer year beyond \(\lceil L\rceil \) also returns two zeros.
13.9 Straight line and sum of years’ digits
For an integer useful life \(L\), straight line spreads the base \(B=K-S\) equally across all years:
Select SL with f \(\mathrm {N}_j\). The symbol \(R_j\) denotes the remaining depreciable value in Y, not the book value including salvage.
Sum of years’ digits assigns the descending weights \(L,L-1,\ldots ,1\), whose sum is \(L(L+1)/2\). It therefore allocates more depreciation to earlier years:
Select SYD with g \(\mathrm {N}_j\). The remaining result subtracts all allocations through year \(j\) from the original base, even when that is the first year you request.
Compare year 2 under SL and SYD
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Set a cost of 1000, salvage of 100, and life of 5 years:
f CLEAR 5 STO n 1000 STO PV 100 STO FV
For straight line, press f CLEAR 2 f \(\mathrm {N}_j\). X is 180.0000 and Y is 540.0000: the annual amount is \(900/5=180\), and \(900-2(180)=540\) remains depreciable. Ending book value is \(540+100=640\).
For SYD with the same stored inputs, press f CLEAR 2 g \(\mathrm {N}_j\). X is 240.0000 and Y is 360.0000. The year-2 weight is 4 out of \(5+4+3+2+1=15\), giving \(900(4/15)=240\). Year 1 used 300; after both years, \(900-300-240=360\) remains. S2 contains 2.0000 after either command.
13.10 Declining balance and straight-line crossover
A positive factor above the usual 100 or 200 is accepted. The salvage cap still applies, so a large factor can exhaust the depreciable base early. The DB methods recalculate the intervening annual steps and limit an active requested year to 100 000. A year beyond the useful life returns zeros without needing those steps. Raising working precision does not increase this iteration bound.
For declining balance, the annual rate is the stored percentage factor divided by the useful life:
With a 5-year life and factor 200, \(q=0.4\). The ordinary DB amount is the opening book value times \(q\), capped so that book value never falls below salvage. Use f NPV to select DB. Its factor is a depreciation factor, not an interest yield. The final year writes off the entire remaining depreciable balance, even if that differs from the usual declining-balance amount.
DB\(\to \)SL, on g NPV, compares the ordinary declining amount with a straight-line allocation of the remaining depreciable value over the remaining useful life. It uses the larger amount, again capped at the remaining depreciable balance. This allows a transition to straight line before the final year. The comparison is made as the schedule is calculated; there is no separate switch-year input or stored crossover flag.
Use a 200 percent declining factor
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Initialize all required inputs:
f CLEAR 5 STO n 1000 STO PV
100 STO FV 200 STO i f CLEAR 2 f NPV
X displays 240.0000; Y displays 260.0000. Year 1 depreciates \(1000(0.4)=400\), leaving book value 600. Year 2 depreciates \(600(0.4)=240\), leaving book value 360, or 260 above salvage.
With the same inputs, press f CLEAR 5 f NPV. Year 5 returns 29.6000 and 0.0000. It writes off the balance above salvage after the earlier years; ending book value is 100, not zero.
| Year | DB amount | DB remaining | DB\(\to \)SL amount | DB\(\to \)SL remaining |
| 1 | 400.0 | 600.0 | 400.0 | 600.0 |
| 2 | 240.0 | 360.0 | 240.0 | 360.0 |
| 3 | 144.0 | 216.0 | 144.0 | 216.0 |
| 4 | 86.4 | 129.6 | 108.0 | 108.0 |
| 5 | 129.6 | 0.0 | 108.0 | 0.0 |
Find the year when crossover changes the amount
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. This example changes salvage to zero:
f CLEAR 5 STO n 1000 STO PV
0 STO FV 200 STO i f CLEAR 4 g NPV
X and Y both display 108.0000. At the beginning of year 4, book value is 216 and two years remain. Declining balance would allocate \(216(0.4)=86.4\), but straight line allocates \(216/2=108\), so the latter is selected.
To reproduce either method’s column in table 13.6, retain these initialized registers. Before each row press f CLEAR, enter the listed year, and select f NPV for DB or g NPV for DB\(\to \)SL. Read the amount in X and the remaining value in Y; the table omits display trailing zeros.
13.11 Fractional useful lives and rounding
A fractional life produces a final partial year numbered \(\lceil L\rceil \); the year argument itself must still be an integer. The four methods have explicit conventions for this case. There is no start-date, midyear-placement, or first-year allowance input. Supplying life 2.5 means the modeled life lasts two full years and a final half-year, rather than selecting a tax or accounting rule.
SL uses \((K-S)/L\) for each full year and multiplies that annual amount by the duration of the last partial year. SYD uses the descending weights \(L,L-1,\ldots ,L-m+1\), where \(m=\lceil L\rceil \), and divides by their sum. For life 2.5, the weights are 2.5, 1.5, and 0.5, summing to 4.5. It does not round life up and use the integer-life weights 3, 2, and 1. Both DB methods write off all remaining value above salvage in the final, possibly partial, year. Crossover before that final year uses the actual remaining fractional life in its straight-line comparison.
Allocate the final half-year
Use RPN, real mode, fixed depth 5, 600 working digits, and FIX 4, with no pending prefix. Set cost 1000, salvage 100, and life 2.5:
f CLEAR 2.5 STO n 1000 STO PV 100 STO FV
Press f CLEAR 3 f \(\mathrm {N}_j\) for SL. The amount is 180.0000, since \((900/2.5)(0.5)=180\). Y is 0.0000: salvage has been reached.
For SYD, press f CLEAR 3 g \(\mathrm {N}_j\). The amount is 100.0000, since \(900(0.5/4.5)=100\), again with zero remaining in Y. Both commands retain year 3 in S2.
The tools do not round annual depreciation to the displayed decimal places. Changing FIX therefore changes the readout without changing the schedule or stored cost. Explicit RND changes only the working value in X; it does not replace PV, FV, or the internally recomputed schedule. See section 5.6 for its rounding and saved-operand rules.
13.12 Financial and date worksheets in ALG
Select the same shifted Financial-panel legend as in RPN to open its worksheet. An unset financial register initially supplies zero to its mapped worksheet field; opening a worksheet does not store its initial values. Review the intended inputs, including any required zero, and accept each with ENTER before COMPUTE. Fields naming financial registers store those registers on acceptance. Date and year arguments remain worksheet inputs. Unlike the RPN commands described earlier, ALG computation does not require that these initial register values already have occupied storage entries. The shared controls, ANS rules, and cancellation behavior are in section 4.12.
Legend |
Accepted inputs |
Outputs |
INT, blue i |
Days (n), Annual interest % (i), Present value (PV) |
Interest on a 360-day year, Principal, Interest on a 365-day year. |
DATE |
Start date, Days |
Result date. |
\(\Delta \)DAYS |
Start date, End date |
Actual days, 30/360 days. |
PRC |
Settlement date, Maturity date, Annual coupon % (PMT), Annual yield % (i) |
Price per 100, Accrued interest; price is also stored in PV. |
YTM |
Settlement date, Maturity date, Annual coupon % (PMT), Price per 100 (PV) |
Annual yield %; also stored in i. |
SL, SYD |
Year, Life (n), Cost (PV), Salvage (FV) |
Depreciation, Book value less salvage. |
DB, DB\(\to \)SL |
The same depreciation fields, plus DB factor % (i) |
Depreciation, Book value less salvage. |
Dates use the selected MDY or DMY encoding, not locale-dependent text. The date-order keys change that shared setting. Bonds retain semiannual coupons, redemption at 100, and actual coupon-period fractions; no frequency or day-count selector is added. Simple interest and bond inputs use annual percentages as labeled, while TVM and NPV continue to use periodic rates. Depreciation retains the four existing methods, including their fractional-life conventions.
COMPUTE validates the complete operation before committing output-bank changes. It updates ANS from the primary output. Select another result without changing ANS, then use Use value if that result belongs in the main expression. CANCEL returns to the suspended expression and drops unaccepted edits; financial values accepted earlier and successful computations remain stored. Relaunch retains the worksheet and its results without calculating automatically. Successful equals and ENTER update ANS with the field value as well. All these ALG operations preserve the saved RPN stack and Last registers.
13.13 Retained inputs, results, and error recovery
The shared financial bank persists across these tools, TVM, cash-flow work, mode changes, and relaunches. In particular, a bond price replaces PV, a bond yield replaces i, and storing a depreciation life or a day count replaces n. Since cash-flow calculations also use n as their selection index, leaving the cash-flow list untouched does not preserve its previous selection. Reinitialize the relevant inputs when changing tasks.
Simple interest and depreciation leave their financial inputs unchanged. Date arithmetic needs no financial input and changes no memory bank. PRC and YTM make the one register update stated in table 13.4; other financial registers and the cash-flow list remain unchanged. A successful store lights FIN, including an explicitly stored zero. Occupancy flags report stored data, not which interpretation of n or i is appropriate.
All numerical operations in this chapter finish an active RPN number before calculating. Dates and bond operations save both input dates in the Last registers; DATE instead saves its day count and start date. Simple interest saves the old stack operands as described earlier. Depreciation preserves both Last registers. These recovery registers are not a backup of financial memory and cannot undo a replaced PV or i.
After an input or domain error, read the status message and inspect the stack and required registers. An unfinished number may already have been accepted, even though no result was produced. Correct an invalid financial value with explicit STO; for a date-pair error, clear and re-enter the pair in the selected order. A missing-register message requires storing the input, including a deliberate zero when appropriate. More display digits do not repair an invalid date, reversed settlement and maturity, a fractional year argument, or an unsuitable financial convention.
These tools use real components only. With complex mode enabled, discarded nonzero imaginary components produce a warning. For retained complex data or saved-state issues, see section 8.7 and chapter 14.