12   Cash Flows, NPV, and IRR

The cash-flow keys describe a sequence of amounts that need not be equal. Enter the initial amount, then each later receipt or payment in time order. Net present value (NPV) discounts that sequence at a rate you supply. Internal rate of return (IRR) searches for a rate at which its net present value is zero.

These commands are available in both modes on the Financial panel. Both use a cash-flow bank separate from the five financial registers, but share n and i with TVM calculations. Understanding that sharing, and the difference between a repetition count and a cash-flow index, is essential when returning to saved work.

The timing, signs, selection by n, and interpretation of NPV and IRR apply in both modes. RPN readers can follow the key sequences below; ALG readers should start with section 12.9 for worksheet entry and direct CPT calculations, then use the relevant problem sections for the shared concepts and numerical examples.

In the RPN instructions, 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. ALG uses named worksheet fields rather than these stack positions.

12.1   Amounts at equally spaced times

\(\mathrm {CF}_0\) is the amount at time zero. Each later stored entry is one period farther into the future: \(\mathrm {CF}_1\) at time 1, \(\mathrm {CF}_2\) at time 2, and so on. Periods must have equal length. They can represent months, quarters, years, or another consistent interval; the calculator does not attach calendar dates to the entries.

Choose one viewpoint and keep its signs consistent. Money paid out is negative and money received is positive. For example, an initial purchase of 1000 followed by receipts of 200, 300, 400, and 500 is entered as \(-1000,200,300,400,500\). If a later period includes both a receipt and an expense, enter their signed net amount for that period. Use the same monetary unit throughout.

Enter a zero for a period with no cash flow. Omitting it moves every later flow one period earlier and changes the calculation. An initial zero is also allowed when the first nonzero flow occurs after time zero. A final sale or residual amount belongs in that period’s cash flow, combined with any other amount at the same time; FV is not read by NPV or IRR.

The discount rate and IRR are percentages per cash-flow period. Use 1 for a rate of 1 percent per month when successive entries are monthly, or 8 for 8 percent per year when entries are annual. The calculator does not infer a period from the amount, index, or date setting. A nominal annual rate divided by 12 and an effective annual rate converted to a monthly rate are different conventions; choose the rate appropriate to the stated calculation.

12.2   Controls and a known starting state

Select RPN above the display. In portrait, swipe left across the top two keyboard rows to show Financial; in landscape, its keys are already visible. The second Financial row contains the five main cash-flow keys. Their functions do not use the TVM store/solve choice: \(\mathrm {CF}_0\) always starts a sequence, for example. In ALG, these keys open worksheets instead of taking stack operands; see section 12.9.

Table 12.1: Cash-flow controls on the Financial panel.

Keys

Purpose

\(\mathrm {CF}_0\)

Replace the entire list with the initial amount in X; store zero in n.

\(\mathrm {CF}_j\)

Append X as the next period’s amount; set n to its index.

\(N_j\)

Use the positive integer in X as a repetition count for the last stored amount.

NPV

Calculate with flows through n, using the rate stored in i.

IRR

Search for a zero-NPV rate, using i as a starting guess if it is stored.

f IRR

Open IRR with bounds, the orange IRR[a,b] function.

g IRR

Open Cash flows, the blue SHOW function, for inspection and recall.

g FV

Clear the list with \(\mathrm {CL}_{cf}\) and store zero in n.

Use real mode, a fixed stack of 5, 600 working digits, and FIX 4 for the examples. Set these as described in section 3.1 and chapter 5. Close any tool or inspector and ensure there is no pending shift or command before starting each independent sequence. f CLEAR, the orange function of \(1/x\), clears the working stack. It leaves both the financial registers and the cash-flow list intact.

Each independent example below explicitly replaces the cash-flow list with \(\mathrm {CF}_0\) and sets the financial inputs it needs. The examples therefore do not depend on empty memories, but they do replace any earlier cash-flow problem. Other financial inputs such as PV, PMT, and FV can remain stored without participating in NPV or IRR.

Use explicit STO i for a discount rate or guess, and STO n for a chosen final index. This states the intention to store regardless of whether a bare TVM key would store or solve. Chapter 11 explains that separate TVM behavior.

12.3   Entering individual and repeated flows

The capacity is 1000 expanded entries, including CF0: indices 0 through 999. Therefore a sequence can contain at most 999 future periods. Repetitions consume one entry per occurrence, just as individually entered flows do. A proposed CFj or Nj operation that would exceed capacity is rejected without appending a partial group or changing n. A valid frequency can still exceed the remaining capacity; check both the repetition count and the existing list length.

All inputs and results must be finite. NPV and IRR use real components of stored values; complex mode does not provide complex discount rates or financial roots. A discarded nonzero imaginary component produces the real-only warning when complex mode is active. Calculation retains the original stored flows rather than erasing their imaginary parts. For ordinary financial work, use real mode and deliberately enter the intended real amounts.

Type the initial signed amount and press \(\mathrm {CF}_0\). That key accepts an unfinished number, stores it as the sole entry, and resets n to zero. Type each later amount and press \(\mathrm {CF}_j\). No ENTER is needed between an amount and its cash-flow key, or before the next freshly typed amount: the preceding key has already finished number entry. CFj and Nj require an existing initial flow. If the bank is empty, begin with CF0; entering a subsequent flow first reports an error.

These three entry commands leave X in place after accepting it and preserve both Last registers. Ordinary digit entry still lifts the stack when the next number begins. The working stack is not the cash-flow record; amounts remain in the separate bank even after they have moved out of a fixed stack or the stack is cleared. Cash-flow writes and recalls follow the shared memory rule: with CMPLX on they copy both components, and with it off they write only the real component. This includes new repetitions made by Nj. Existing flows keep their stored components until replaced; see section 6.5.

Enter four unequal annual receipts

Use the chapter’s prepared RPN settings, real mode, FIX 4, and no pending command. Enter an initial payment of 1000 and four annual receipts:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\)

200 \(\mathrm {CF}_j\) 300 \(\mathrm {CF}_j\)

400 \(\mathrm {CF}_j\) 500 \(\mathrm {CF}_j\)

The final display is 500.0000. The bank contains five amounts, at indices 0 through 4, and n contains 4. Press RCL n to check it: the display becomes 4.0000. That recall lifts a value onto the stack; it does not change the cash-flow selection.

Repeat an amount for consecutive periods

After storing an amount with \(\mathrm {CF}_j\), type its total repetition count and press \(N_j\). A count of 3 means three consecutive occurrences including the one already entered. It appends two more copies. A count of 1 adds nothing. The count must be an integer from 1 through 1000, and the expanded list must still fit the 1000-entry capacity stated above.

SpicyRPN stores the expanded period-by-period sequence, not groups with separately editable frequencies. Each copy has its own index. Pressing \(N_j\) again appends another count-minus-one copies of the last stored amount; it does not revise the size of an earlier group. Neither recalling a flow nor changing n changes which stored amount is the last one.

Three equal receipts followed by a different one

Use the same prepared RPN settings, with no pending prefix. Enter:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\)

250 \(\mathrm {CF}_j\) 3 \(N_j\) 400 \(\mathrm {CF}_j\)

The resulting bank is:

Index 0 1 2 3 4
Amount \(-1000\) 250 250 250 400

There are five stored entries covering four future periods. The final display is 400.0000; RCL n shows 4.0000. At an 8 percent rate, continue with 8 STO i NPV to obtain -61.7138 .

\(N_j\) repeats the actual final stored entry even if that entry is \(\mathrm {CF}_0\). Using it immediately after CF0 therefore copies the initial amount into subsequent periods; it is not a way to repeat a time-zero amount at time zero. Normally, enter the first future amount with CFj before applying a frequency.

12.4   Reviewing and replacing stored amounts

In RPN, press g IRR to open the Cash flows panel. Its stepper reads CF k of m, where \(k\) is the selected index and \(m\) is the last stored index. Use its decrease and increase controls to move through the entries. The panel shows one amount at a time, with up to 32 significant digits, independently of the main display’s FIX count. It is a review panel, not an editable table of amounts or frequencies.

The selector retains the previously viewed index when possible; after the list becomes shorter it is clamped to a valid index. It does not necessarily reopen at zero. The selector covers the whole stored list, even if n currently selects a shorter prefix for calculation. Moving the selector does not change n, the stack, or an unfinished number. Close returns without recalling anything.

Recall into X commits any active number, replaces X (display S0) with the displayed flow, and closes the panel. It does not lift or drop the stack, and it preserves both Last registers. The stored flow is unchanged. With an empty bank, the panel says No cash flows entered.; trying to recall reports an error and leaves the panel open.

Direct indexed recall

Indices begin at 0 and must identify an existing entry. If the bank contains five flows, valid indices are 0 through 4, not 1 through 5. An out-of-range, negative, or fractional index is rejected. Indexed recall is not limited to the flows currently selected by n.

For a known index, type it into X, then press RCL \(\mathrm {CF}_j\). Use the unshifted CFj key as the target. It replaces the index with that flow, saves the index in Last X, and leaves Last Y and the deeper stack unchanged. This differs from the SHOW panel’s recall, which preserves both Last registers. Neither method changes n.

Replace or adjust one existing flow

To replace a flow, enter the new amount, press ENTER, then enter its index and press STO \(\mathrm {CF}_j\). The value comes from Y (S1); the index comes from X (S0). Storage consumes the index, leaving the new amount in X. It saves the index in Last X and preserves Last Y. The number of flows and the selected n are unchanged. Index 0 can be replaced this way without resetting the rest of the sequence.

Arithmetic storage also works. Put the adjustment in Y and the existing index in X, then press STO, the arithmetic operator, and unshifted CFj. For example, STO \(-\) \(\mathrm {CF}_j\) subtracts the adjustment from the stored flow; division divides the stored flow by the adjustment. A zero divisor is rejected. Afterward the adjustment, not the new stored result, remains in X; recall the index to inspect the changed amount.

Edit just one member of a repeated sequence

Use the chapter’s prepared RPN settings, with no pending command. Re-create the five-entry list so its previous contents do not matter:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\)

250 \(\mathrm {CF}_j\) 3 \(N_j\) 400 \(\mathrm {CF}_j\)

Replace only the flow at time 2, then increase it by 25:

275 ENTER 2 STO \(\mathrm {CF}_j\)

25 ENTER 2 STO + \(\mathrm {CF}_j\)

The first store leaves 275.0000 in X; the second leaves 25.0000. Check the stored result with 2 RCL \(\mathrm {CF}_j\): it is 300.0000. The list is now \(-1000,250,300,250,400\), with \(n=4\); only one copy changed. Continue with 8 STO i NPV to obtain -18.8469.

There is no individual insertion, deletion, or group-frequency editor. Replacing a flow with zero keeps its period and index. To remove a mistaken extra period and shift later amounts earlier, start a new sequence with CF0 and re-enter it correctly. Indexed STO cannot append an entry or create a gap; use CFj and Nj for appending.

12.5   Selecting the prefix with n

For both NPV and IRR, n is the index of the last included flow. The calculation uses the inclusive prefix \(\mathrm {CF}_0,\ldots ,\mathrm {CF}_n\). Thus \(n=4\) means five amounts: the initial flow and four future periods. It is not the number of groups entered with CFj, and it is not the most recently typed Nj frequency.

The selector must be an explicitly stored integer from 0 through the last existing index. A count beyond the list, a negative value, or a fraction is an error. NPV and IRR do not use a fractional TVM period count or round it into a cash-flow index.

CF0, CFj, and Nj automatically set n to the final stored index after their operation. To temporarily use a shorter prefix, enter its last index and press STO n. All later flows remain stored and visible in SHOW. To restore the full sequence, store its final index again. NPV allows \(n=0\), returning CF0 alone at any valid supplied rate; IRR needs at least two selected flows.

12.6   Net present value

NPV expresses the selected sequence as one signed amount at time zero. With periodic percentage \(i\), its formula is

\begin{equation} \operatorname {NPV}(i)=\sum _{t=0}^{n} \frac {\mathrm {CF}_t}{(1+i/100)^t}. \label {eq:cashflows-npv} \end{equation}

CF0 is already at time zero and is not discounted. A positive rate reduces the present contribution of later positive receipts. At zero interest, NPV is simply the signed sum of the selected flows. Negative rates are accepted when they are greater than \(-100\) percent; the rate \(-100\) and all smaller rates are rejected.

Store the percentage in i, then press NPV. Unlike the TVM convention for unwritten inputs, NPV requires i to be explicitly stored. If you want zero interest, store zero. It also requires a valid stored n, normally supplied by cash-flow entry. An empty list cannot be evaluated.

The result lifts into X (display S0), moving the previous X to Y (S1). It preserves both Last registers, the cash-flow list, and all five financial registers. The result is not automatically stored in PV. Repeating NPV recalculates and lifts another result. Display rounding does not change the amount used in later arithmetic.

Discount a four-year sequence at 8 percent

Use the chapter’s prepared RPN settings, real mode, 600 working digits, FIX 4, and no pending prefix. Enter:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\)

200 \(\mathrm {CF}_j\) 300 \(\mathrm {CF}_j\) 400 \(\mathrm {CF}_j\)

500 \(\mathrm {CF}_j\) 8 STO i NPV

The display is 127.4347, in the same monetary unit as the inputs. The independent calculation is

\[ -1000+\frac {200}{1.08}+\frac {300}{1.08^2} +\frac {400}{1.08^3}+\frac {500}{1.08^4} \approx 127.4346540820. \]

n remains 4 and i remains 8. The positive amount is the difference between the discounted future receipts and the initial payment under these particular assumptions.

To see the selection effect using that just-entered list and the same settings, press 2 STO n NPV. The display becomes -557.6132: only CF0, 200, and 300 participated. Continue with 0 STO n NPV to obtain -1,000.0000, then restore the complete selection with 4 STO n. The omitted flows were retained throughout.

You can compare discount rates without re-entering the flows. With that full list and \(n=4\), 0 STO i NPV gives 400.0000. Replacing the rate with 10 +/\(-\) STO i NPV gives 903.3684 at \(-10\) percent. Explicitly restore the rate you intend to use after such comparisons.

12.7   Internal rate of return

An IRR is a periodic percentage \(i\) satisfying \(\operatorname {NPV}(i)=0\). It is a rate, not an amount and not a total percentage increase over the whole sequence. The search uses the same prefix through n as NPV and considers finite rates greater than \(-100\) percent.

IRR requires at least two selected entries and at least one positive and one negative amount. All-zero data does not determine a unique rate; a sequence of one sign has no finite zero-NPV rate in the allowed domain. Opposite signs are necessary, but do not guarantee a solution. For example, \(-100,100,-100\) has no real rate above \(-100\) percent that makes its NPV zero.

A stored i supplies the initial rate guess; if it is unset, the starting guess is zero. A supplied guess must itself be finite and above \(-100\) percent. After checking the guess, press IRR to search automatically. The guess is a search starting point, not a constraint that the answer equal or remain on one side of that rate. To control a specific interval, use the bounds panel described next.

IRR lifts its result into X (display S0) and preserves both Last registers. It does not overwrite i, nor does it change n or the stored flows. If you next press NPV, NPV therefore still uses the old rate. To check the returned rate, press STO i NPV immediately after IRR. This stores the retained answer, including its undisplayed digits.

Find the rate for the four annual receipts

Use the chapter’s prepared RPN settings and no pending prefix. Re-enter the entire problem and choose an 8 percent starting guess:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\)

200 \(\mathrm {CF}_j\) 300 \(\mathrm {CF}_j\) 400 \(\mathrm {CF}_j\)

500 \(\mathrm {CF}_j\) 8 STO i IRR

The result is 12.8257, or about 12.8257 percent per year for these annual flows. Its leading digits are 12.8257269001674. i is still 8.

Continue directly with STO i NPV. The residual is very close to zero. It can be a tiny nonzero number shown in scientific notation even under FIX 4; the solver and the discounted sum use finite precision. Do not retype 12.8257 for this check, because that would test a rounded rate instead.

For monthly flows, a result of 1 means 1 percent per month. Under monthly compounding the corresponding effective annual percentage is \(100[(1+1/100)^{12}-1]\), about 12.6825 percent, whereas 12 times the monthly rate is a nominal annual percentage. Those interpretations require a chosen compounding convention; IRR itself returns only the rate per entered period.

12.8   Bounds, multiple roots, and unsuccessful searches

With an initial outflow and only nonnegative later receipts, including at least one positive receipt, NPV decreases as the discount rate rises. With later outflows, that relationship need not hold, and more than one rate can make NPV zero. Automatic IRR returns one root found from its guess, not a list of every possible rate or a guarantee that the chosen root is unique.

The interval must bracket a sign change in NPV, unless an endpoint already evaluates to zero. A range that merely contains a root is not sufficient if its endpoint NPVs have the same sign. Use an interval around the crossing you want; a broad interval containing several crossings does not identify all of them. An explicit bracket supplies the search interval directly instead of using i as a guess.

Press f IRR to open IRR with bounds. The lower bound must be strictly less than the upper bound, and both must be finite and greater than \(-100\) percent. Replace the Lower % and Upper % fields with periodic percentages. The fields are typed panel inputs, not operands taken from the stack. Their previous contents can remain from an earlier use, so check both fields every time. Their first-use defaults are 0 and 2 percent. After checking both bounds, press Apply. ALG uses the separate worksheet in section 12.9, with initial bounds of 0 and 100 percent, ENTER to accept edited fields, and COMPUTE to calculate.

Successful Apply closes the panel and lifts the rate into X with the same register effects as ordinary IRR. An invalid field or unsuccessful search leaves the panel open with a message for correction. Opening the panel and closing without applying preserve the working entry. An attempted calculation can commit that entry before reporting an error, so check ENTRY before trying a digit correction.

Select either of two possible rates

Use the chapter’s prepared RPN settings and no pending command. Enter an initial outflow, an intervening receipt, and a final outflow:

f CLEAR 100 +/\(-\) \(\mathrm {CF}_0\)

230 \(\mathrm {CF}_j\) 132 +/\(-\) \(\mathrm {CF}_j\)

Press f IRR. Set Lower % to 5 and Upper % to 15, then press Apply. The result is 10.0000. Open the same panel again, set the bounds to 15 and 25, and apply. The result is 20.0000.

Both satisfy the same equation. With \(q=1+i/100\),

\[ -100+\frac {230}{q}-\frac {132}{q^2}=0 \quad \Longleftrightarrow \quad (q-1.1)(q-1.2)=0. \]

The bounds distinguish the two crossings; they do not change the cash-flow data or select a different set of periods.

For the just-entered list, automatic IRR also illustrates the guess’s effect. With the same settings and no pending prefix, 9 STO i IRR returns 10.0000; 21 STO i IRR returns 20.0000. These observed choices are not a general nearest-root rule. Bounds make the intended crossing explicit.

A failure message is not a list of roots

A root can also touch zero without changing sign. For \(-100,220,-121\), the mathematical rate 10 percent is such a double root. Bounds of 5 and 15 percent have negative NPV at both ends and are rejected by this sign-changing-bracket method. Likewise, the two-root example above has equal-sign endpoints outside both roots; an interval enclosing both may be rejected despite containing two solutions. Trying different guesses or bounds is not a complete enumeration of roots.

A Financial solver message can report failure to bracket a sign change or failure to converge within the iteration limit. Read the message, check the selected flows and signs, then inspect NPV at candidate rates to find a meaningful sign-changing interval. A failed numerical search by itself does not prove that the mathematical problem has no root. Failed NPV/IRR calculations do not replace stored amounts or produce a new stack result, although a pending entry may have been accepted before the failure was found.

12.9   Cash-flow worksheets in ALG

Main CF0, CFj, Nj, NPV, and IRR open their corresponding worksheets. Accept each edited field with ENTER, then select the named action. Nothing executes merely because a worksheet opens or resumes.

Table 12.2: ALG cash-flow entry and calculation.

Key or operation

Fields

Action and effect

CF0

Initial cash flow

STORE replaces the entire sequence and sets n to 0.

CFj

Next cash flow

APPEND requires CF0 and adds the next amount; n becomes its index.

Nj

Frequency

REPEAT counts the original occurrence and adds copies of the latest flow; n becomes the final index.

STO CFj

Cash-flow index, Value

STORE replaces an existing entry. Arithmetic STO selects ADD, SUBTRACT, MULTIPLY, or DIVIDE. n is unchanged.

RCL CFj or blue IRR (SHOW)

Cash-flow index

RECALL supplies a labeled output; Use value inserts it in the main expression.

NPV

Last included index (n), Interest per period % (i)

COMPUTE discounts CF0 through CFn.

IRR

Last included index (n), Initial guess % (i)

COMPUTE returns a periodic percentage without overwriting i.

Orange IRR

n, initial guess, lower and upper rate %

COMPUTE searches the chosen sign-changing interval.

The operation selector provides the related financial worksheets, including indexed editing. SHOW opens indexed recall without reading or inserting a value automatically. On its first visit the index is zero; subsequent visits retain the worksheet’s accepted index or draft. Enter the desired index in the worksheet, press ENTER, then RECALL. Zero is CF0’s index; an index must identify an existing entry. Repetition is expanded storage, subject to the same 1000-entry limit as RPN.

The ALG bounded-IRR worksheet initially offers 0 and 100 percent. Its accepted bounds and edits are retained, so review both every time. These defaults differ from the RPN bounds panel’s initial 0 and 2 percent. Both modes require a valid sign-changing interval as described in section 12.8.

Before a direct CPT calculation, finish or clear a pending compound expression and set the intended discount rate or initial guess. Mapped financial fields read the current register values, including zero for an unset register. Thus ALG NPV can use an unset i as zero; RPN NPV requires an explicitly stored i. CPT followed by NPV or IRR performs a direct calculation from the shared cash-flow bank and current n and i. Its successful result becomes the displayed completed answer and ANS. The unprefixed NPV and IRR keys instead open worksheets, allowing labeled input review and retention of the main expression. IRR never replaces i merely because it was computed.

Financial fields accepted with ENTER update their mapped registers. Other accepted fields remain worksheet inputs until the named action validates the complete operation. A failure cannot partly replace a cash-flow list. On success the declared primary output is the stored or recalled amount, frequency, NPV, or IRR. CF0, CFj, and Nj additionally show the updated last index; indexed replacement, indexed recall, NPV, and IRR return only their primary result. Browsing outputs does not alter ANS. Canceling a draft is not undo for completed storage or repetition.

For the sequence \(-1000,200,300,400,500\), STORE -1000 in CF0, then APPEND each of the four later values. The last index is 4. Open NPV, accept n = 4 and i = 10, and COMPUTE. The result is approximately \(71.78471416\). This is the same periodic calculation described earlier, without using any RPN stack register.

12.10   Comparing amount and rate results

NPV and IRR answer different numerical questions. NPV is a monetary amount at a supplied rate; IRR is a rate derived from the sequence. Multiplying every flow by the same positive factor multiplies NPV by that factor but leaves IRR unchanged. Comparisons should therefore retain each sequence’s scale, timing, and the rate used for discounting.

Two scales of investment over two periods

Use the chapter’s prepared RPN settings, real mode, FIX 4, 600 working digits, and no pending command. Project A pays 100 now and receives 144 at the end of period 2, with nothing at period 1. Enter:

f CLEAR 100 +/\(-\) \(\mathrm {CF}_0\) 0 \(\mathrm {CF}_j\)

144 \(\mathrm {CF}_j\) 10 STO i NPV

The NPV is 19.0083. Press IRR to obtain 20.0000 percent per period. Record those results; the next CF0 replaces this list.

Project B pays 1000 now and receives 1322.5 at the same time 2:

f CLEAR 1000 +/\(-\) \(\mathrm {CF}_0\) 0 \(\mathrm {CF}_j\)

1322.5 \(\mathrm {CF}_j\) 10 STO i NPV

The NPV is 92.9752. Press IRR to obtain 15.0000 percent per period. The independent checks are \(-100+144/1.1^2\) and \(-1000+1322.5/1.1^2\) for NPV; \(144/100=1.2^2\) and \(1322.5/1000=1.15^2\) give the rates.

Project A has the larger percentage rate in this example, while B has the larger monetary NPV at 10 percent and requires a larger initial amount. The outputs describe those distinct properties; they do not supply any missing assumptions about costs, risk, available capital, or the accuracy of the entered receipts. The explicit zero at period 1 is part of each calculation, not an unused memory slot.

12.11   Clearing and numerical limits

Choose a clear according to the data you intend to discard. Table 12.3 distinguishes the cash-flow list from the financial registers and the working stack. All sequences assume there is no existing pending command or shift.

Table 12.3: Clearing and replacing cash-flow work in RPN.

Sequence

Effect on stored financial work

Amount, \(\mathrm {CF}_0\)

Replace all flows with that initial amount and store \(n=0\). Other financial registers remain.

g FV: CLcf

Remove all flows and store \(n=0\). Preserve i, PV, PMT, and FV.

f FV: CLfin

Remove all five financial registers; retain the cash-flow list. Restore n before using the list, and i before NPV.

g STO n

MCLR’s financial group: remove all five financial registers and all cash flows.

f CLEAR

Clear the RPN stack and unfinished entry; preserve both financial banks.

CF0 lights CF because it stores an entry, and FIN because it stores \(n=0\). CLcf removes CF, but leaves FIN present because that zero in n is still stored. A zero cash flow also remains occupied and keeps CF lit. The financial MCLR group removes both banks and both flags. For unfinished-entry handling, retained settings, and prefix cancellation, see section 6.10.

NPV uses the current working precision, not the displayed number of places. IRR is an iterative result with a separate convergence rule. The current solver searches in \(\ln (1+i/100)\), with a standard interval tolerance of \(10^{-30}\) scaled to the size of that transformed variable and a limit of 200 iterations per search stage. The bounds panel has no tolerance setting. A working precision of 600 digits consequently does not promise 600 correct IRR digits; rounding, sensitivity, the stopping rule, and iteration limits still matter. See section C.9 for the full stopping rule and chapter 5 for the precision of retained inputs.

When a result is unexpected, first inspect the full stored sequence, then recall n and i. Check for an omitted zero period, an amount with the wrong sign, a repeated count that included extra copies, a shorter selected prefix, or a rate left by a different financial task. For IRR, also check the guess or bounds and whether the cash-flow signs permit multiple roots. The bank survives stack clearing, mode changes, and relaunch; those actions do not prepare a new cash-flow problem.