Personal Home Finance (FIN PACK) is a multi-module financial calculator covering simple interest, loan payment/retirement, future value (compound growth with annual/semi-annual/quarterly/monthly/daily compounding), present value, and net present value.
The program uses a shared input-validation subroutine at line 12 that checks character codes to ensure only numeric input is accepted, rejecting non-digit, non-period characters and forwarding “R” key presses back to the main menu.
The instruction module at line 9896 uses PLOT and DRAW commands to render a schematic diagram of the eight modules with connecting lines, built from DATA statements read at line 9910.
Program Analysis
Program Structure
The program is organized as a menu-driven application with a two-part loader (lines 10–200 in the “exec” stub) and the main body beginning at line 1. The main body is divided into distinct functional regions:
- Lines 1–25: Initialization, error handling, and shared utility subroutines (border drawing, input validation)
- Lines 40–65: Simple Interest calculator (LOC=1)
- Lines 200–232: Loan Calculator — payment amount and payoff time (LOC=2)
- Lines 300–331: Future Value — compound growth, variable payments, constant payments (LOC=3)
- Lines 400–456: Present Value — lump sum, variable receipts, constant receipts (LOC=4)
- Lines 480–510: Net Present Value (LOC=5)
- Lines 600–645: Save routine with countdown animation
- Lines 650–679: Terminate routine with countdown animation
- Lines 8900–8924: Splash/intro sequence
- Lines 8925–8953: Main menu
- Lines 9000–9002: Post-load entry point (loads machine code, jumps to line 1)
- Lines 9896–9999: Instruction module
A LOC variable tracks which module is active, allowing context-sensitive returns from the instruction pages (e.g., lines 9948, 9955, 9972, 9987, 9998 branch back to the correct calculator based on LOC).
Machine Code Usage
The program saves and reloads a machine code block named “EZCODE” at line 631 using SAVE "EZCODE" CODE USR "a", 21*8, which stores 168 bytes starting at the address of UDG “a”. On startup at line 9001, LOAD "EZCODE" CODE reloads this block before jumping to line 1. The purpose of the machine code is not described within the BASIC listing itself, but given its size (168 bytes) and location at the UDG area, it likely defines custom graphics characters used in the display.
Input Validation Subroutine
Lines 12–24 implement a reusable numeric input validator. After each INPUT V$, the program calls GO SUB 12, which loops through each character of V$ checking its character code:
- Code 82 or 114 (“R” or “r”) immediately redirects to the main menu at line 8925
- Codes below 46 (before “.”) or equal to 47 (“/”) are rejected as invalid
- Codes above 57 (above “9”) are also rejected
- Invalid input triggers line 24: a BEEP, an error message, a new
INPUT V$, and a restart of the validation loop
Note that lines 15–16 and 17–18 are exact duplicates of each other — the checks CODE V$(J)<46 and CODE V$(J)=47 are each performed twice. This is redundant but harmless.
Financial Calculations
| Module | Formula / Key Lines |
|---|---|
| Simple Interest | INT = P*(I/100)*T (line 56) |
| Loan Payment Amount | Standard annuity: V2 = V1/(1-(1+V1)^-V3) (line 211) |
| Loan Payoff Time | V2 = LN(A/(A-P*V)) / LN(1+V) (line 225) |
| Compound Growth (5 methods) | Annual, semi-annual, quarterly, monthly, daily: PV*((1+I)^N) with varying divisors (line 311) |
| FV Variable/Constant Payments | Loop accumulating P(N)*((1+I/100)^Y), decrementing Y each step (line 323) |
| PV Lump Sum | PV = FV/((1+(I/100))^NN) (line 411) |
| PV Variable/Constant Receipts | Loop: PV = P(N)/(1+I/100)^N accumulated into TOT (lines 420, 454) |
| Net Present Value | NPV = TOT - INV (line 500), reusing PV receipt loops |
TEST Variable and Shared Code Paths
The TEST variable serves as a flag to direct shared subroutine flows between related modules. The PV variable-receipt loop (lines 418–430) and the constant-receipt loop (lines 450–456) are both reused by the NPV module (lines 480–510): when TEST=2 (variable NPV) or TEST=3 (constant NPV), the receipt loops branch to line 500 instead of displaying their own results. This avoids duplicating calculation code but makes control flow non-obvious.
A notable anomaly is at line 418: IF TEST=0 THEN LET TEST=1: REM PV VARIABLE. The intent appears to distinguish entry from the PV menu (TEST=0 set to 1 for variable) versus re-entry from NPV (TEST=2 or TEST=3), but the condition does not guard against overwriting TEST=2 or TEST=3 correctly — the IF only acts when TEST=0, so NPV values are preserved.
Error Handling
Line 4 sets ON ERR GO TO 70. Lines 70–73 implement a recovery loop: ON ERR RESET to clear the error, PAUSE 100, then re-arm both ON ERR GO TO 70 and ON ERR CONTINUE. This provides a safety net against runtime errors during financial calculations (e.g., division by zero or overflow) without crashing to a BASIC error screen.
Instruction Module Graphics
Lines 9901–9919 draw a schematic diagram of the menu structure using PLOT and DRAW. Coordinates for module boxes are stored in a DATA statement at line 9910 and read sequentially. Each iteration draws a rectangle at the specified coordinates using a series of PLOT/DRAW calls, and the loop continues until n=10 (nine data pairs consumed). Lines 9920–9925 are entirely commented out with REM and appear to be debugging scaffolding left in the listing.
Countdown Save/Terminate Animations
Lines 600–641 (save) and 650–679 (terminate) share a similar animated countdown pattern: a FOR N=1 TO 20 loop uses PAUSE 20 and BEEP to pace the animation, overwriting block graphic characters on a “10 9 8 7 6 5 4 3 2 1 0” display row. The save routine prompts the user to turn on the tape recorder at N=6 (line 640). At the end of the save loop, the program saves itself with SAVE "exec" LINE 9000, which sets line 9000 as the auto-run entry point — this entry point loads the machine code block before jumping to the main initialization.
Key BASIC Idioms
- Repeated
INKEY$polling loops (noINPUTfor menu navigation) withPAUSEdelays to reduce CPU spin INT (P*V2*100)/100at line 211 to round payment amounts to two decimal placesDIM P(Y)/DIM P(NN)used to create dynamically sized payment arrays before loop entry- String variables
R$,E$,O$,K$initialized at line 8925 to hold reused display strings, reducing repeated string literals - The intro sequence at lines 8907–8911 uses a variable
TONEincremented and decremented across nested loops to produce a melodic sweep effect
Content
Source Code
10 REM "exec"
20 LOAD "EZDRAW"SCREEN$
30 LOAD ""
200 SAVE "exec" LINE 20
1 REM "FIN PACK"
2 CLS : FLASH 0: BORDER 1: PAPER 6: INK 0: BRIGHT 0: INVERSE 0: CLS
3 LET COL=1
4 ON ERR GO TO 70
5 GO SUB 8900
8 GO SUB 8925
10 CLS : GO SUB 25: BEEP .1,32: PRINT AT 3,4;"D A T A S U P P L I E D": PRINT AT 4,4;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": RETURN
11 CLS : GO SUB 25: BEEP .1,32: PRINT AT 2,4;"D A T A S U P P L I E D": PRINT AT 3,4;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": RETURN
12 LET LENGTH=LEN V$: FOR J=1 TO LENGTH: IF J>LENGTH THEN : RETURN
13 IF CODE V$(1)=82 OR CODE V$(1)=114 THEN GO TO 8925
14 IF CODE V$(J)>57 THEN GO TO 24
15 IF CODE V$(J)<46 THEN GO TO 24
16 IF CODE V$(J)<46 THEN GO TO 24
17 IF CODE V$(J)=47 THEN GO TO 24
18 IF CODE V$(J)=47 THEN GO TO 24
19 NEXT J: RETURN
20 IF NN<1 THEN PRINT AT 18,7;"TRY AGAIN...YEARS ": BEEP .3,12:: PRINT AT 19,7;"MUST BE GREATER THAN 1": PAUSE 200: PRINT AT 18,7;O$;: PRINT AT 19,7;" ": BEEP .1,22: PRINT AT 18,7;"# YEARS FROM NOW $ REC'D": PRINT AT 19,7;"(MUST BE >=1)": INPUT NN: BEEP .1,22: RETURN
21 RETURN
22 COPY : RETURN
24 BEEP 1.25,12: PRINT AT 21,7;" ERROR: TRY AGAIN ": INPUT V$: LET J=0: LET LENGTH=0: PRINT AT 21,7;"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b": GO TO 12
25 FOR N=0 TO 31: PRINT AT 0,N;"\t": PRINT AT 21,N;"\b": NEXT N: FOR N=0 TO 21: PRINT AT N,0;"\t": PRINT AT N,31;"\t": NEXT N: RETURN
41 FOR N=17 TO 19: PRINT AT N,3;R$: INK 4: PRINT AT 19,9;E$: INK 0: NEXT N: PAUSE 15: INK 0: IF INKEY$="R" THEN GO TO 8925
42 FOR N=17 TO 19: PRINT AT N,9;O$: NEXT N
43 IF INKEY$="r" THEN GO TO 8925
45 RETURN
50 LET LOC=1: CLS : BORDER 1: PAPER 7: INK 0: CLS : GO SUB 25: REM SIMPLE INTEREST
51 PRINT AT 4,8;"SIMPLE INTEREST": PRINT AT 5,11;"CALCULATOR": PRINT AT 6,8;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": BEEP .1,22:
52 FOR N=17 TO 19: PRINT AT N,2;R$: NEXT N
53 BEEP .1,22: PRINT AT 17,7;"ENTER ": PRINT AT 18,7;"PRINCIPAL AMOUNT": PRINT AT 19,7;"EX. (150.00)": INPUT V$: GO SUB 12: LET P=VAL V$
54 BEEP .1,22: PRINT AT 18,7;"INTEREST RATE ": PRINT AT 19,7;"EX. (15.25) ": INPUT V$: GO SUB 12: LET I=VAL V$
55 BEEP .1,22: PRINT AT 18,7;"TIME IN YEARS": PRINT AT 19,7;"EX. (0.25 OR 2)": INPUT V$: GO SUB 12: LET T=VAL V$
56 LET INT=P*(I/100)*T: LET TOT=INT+P
57 GO SUB 10: PRINT AT 6,4;"$ ";P;" PRINCIPAL": PRINT AT 7,4;" ";I;" % INTEREST": PRINT AT 8,4;" ";T;" YEAR(S)"
58 PRINT AT 10,4;"R E S U L T": PRINT AT 11,4;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 13,4;"$ ";INT;" EARNED INTEREST": PRINT AT 14,4;"$ ";TOT;" TOTAL VALUE": PRINT AT 16,2;K$
59 IF INKEY$="1" THEN GO TO 50:
60 IF INKEY$="2" THEN GO TO 8925
61 IF INKEY$="I" THEN GO TO 9945
62 IF INKEY$="3" THEN GO SUB 22
64 GO SUB 40
65 GO TO 59
70 ON ERR RESET
71 PAUSE 100
72 ON ERR GO TO 70
73 ON ERR CONTINUE
199 STOP
200 LET LOC=2: CLS : BORDER 2: PAPER 7: INK 0: CLS : GO SUB 25:
201 PRINT AT 3,14;"LOAN ": PRINT AT 4,11;"CALCULATOR": PRINT AT 5,11;"\..\..\..\..\..\..\..\..\..\..": PRINT AT 9,4;"<1> LOAN PAYMENT AMOUNT": PRINT AT 11,4;"<2> TIME REQUIRED": PRINT AT 12,4;" TO RETIRE DEBT": PRINT AT 15,11;"\..\..\..\..\..\..\..\..\..\..":
202 BEEP .1,22: PAUSE 15
203 IF INKEY$="3" THEN GO SUB 22
204 IF INKEY$="1" THEN GO TO 208
205 IF INKEY$="2" THEN GO TO 220
206 PAUSE 10: GO SUB 40
207 GO TO 204
208 BEEP .1,22: PRINT AT 17,7;"ENTER ": PRINT AT 18,7;"LOAN PERIOD (YRS)": PRINT AT 19,7;"(EX. 1.5) ": PAUSE 40: INPUT V$: GO SUB 12: LET T=VAL V$
209 BEEP .1,22: PRINT AT 18,7;"NUMBER OF PAYMENTS ": PRINT AT 19,7;"PER YEAR(1-12)": INPUT V$: GO SUB 12: LET PN=VAL V$
210 BEEP .1,22: PRINT AT 18,7;"PRINCIPAL AMOUNT ": PRINT AT 19,7;"(EX. 100.00) ": INPUT V$: GO SUB 12: LET P=VAL V$: BEEP .1,22: PRINT AT 18,7;"ANNUAL PERCENTAGE ": PRINT AT 19,7;"RATE (EX. 12.5)": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22:
211 LET V1=I/(PN*100): LET V3=T*PN: LET V2=V1/(1-(1+V1)^-V3): LET R1=(INT (P*V2*100))/100
212 GO SUB 10: PRINT AT 6,4;"$ ";P;" PRINCIPAL": PRINT AT 7,4;" ";T;" YEAR(S)": PRINT AT 8,4;" ";PN;" PAYMENTS/YR.": PRINT AT 9,4;" ";I;" PERCENT": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";R1;" = EACH PAYMENT": PRINT AT 16,2;K$
213 GO SUB 40
214 IF INKEY$="1" THEN GO TO 200
215 IF INKEY$="2" THEN GO TO 8925
216 IF INKEY$="I" THEN GO TO 9949
217 IF INKEY$="3" THEN GO SUB 22
218 PAUSE 15: GO TO 213
220 GO SUB 40: BEEP .1,22: PRINT AT 17,7;"ENTER": PRINT AT 18,7;"NUMBER OF PAYMENTS": PRINT AT 19,7;"PER YEAR(1-12)": PAUSE 40: INPUT V$: GO SUB 12: LET PN=VAL V$:
221 BEEP .1,22: PRINT AT 18,7;"ANNUAL PERCENTAGE ": PRINT AT 19,7;"RATE(EX. 12.5)": INPUT V$: GO SUB 12: LET I=VAL V$:
222 LET V=I/(100*PN)
223 BEEP .1,22: PRINT AT 18,7;"PRINCIPAL AMOUNT ": PRINT AT 19,7;"(EX. 100.00) ": INPUT V$: GO SUB 12: LET P=VAL V$: BEEP .1,22: PRINT AT 18,7;"AMOUNT OF EACH ": PRINT AT 19,7;"PAYMENT(EX. 250.00)": INPUT V$: GO SUB 12: LET A=VAL V$: BEEP .1,22:
224 IF ((A/(A-P*V)))/(LN (1+V))<=0 THEN PRINT AT 17,7;"THAT PAYMENT AMOUNT": PRINT AT 18,7;"WILL NOT PAY OFF ": PRINT AT 19,7;"THE LOAN AT ";I;" % ": BEEP .3,12: PAUSE 200: GO TO 200
225 LET V2=(LN (A/(A-P*V)))/(LN (1+V)): LET R1=V2/PN
226 GO SUB 10: PRINT AT 6,4;"$ ";P;" PRINCIPAL": PRINT AT 7,4;"$ ";A;" PAYMENT": PRINT AT 8,4;" ";PN;" PAYMENTS/YR.": PRINT AT 9,4;" ";I;" %": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,3;R1;" YR(S) RETIRE LOAN": PRINT AT 16,2;K$: BEEP .1,32:
227 GO SUB 40
228 IF INKEY$="1" THEN GO TO 200
229 IF INKEY$="2" THEN GO TO 8925
230 IF INKEY$="I" THEN GO TO 9948
231 IF INKEY$="3" THEN GO SUB 22
232 PAUSE 15: GO TO 227
300 LET LOC=3: PAPER 7: INK 0: BORDER 3: LET TOT=0: LET TEST=0: REM FV COMPOUND INTEREST
301 CLS : GO SUB 25: PRINT AT 3,10;"FUTURE VALUE": PRINT AT 4,10;"\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 7,4;"<1> INVESTMENT GROWTH": PRINT AT 8,4;" (COMPOUND INTEREST)": PRINT AT 10,4;"<2> FUTURE VALUE OF": PRINT AT 11,4;" VARIABLE PAYMENTS": PRINT AT 13,4;"<3> FUTURE VALUE OF": PRINT AT 14,4;" CONSTANT PAYMENTS": PRINT AT 15,10;"\..\..\..\..\..\..\..\..\..\..\..\..": BEEP .1,22:
302 GO SUB 40
303 IF INKEY$="1" THEN GO TO 310
304 IF INKEY$="2" THEN GO TO 319
305 IF INKEY$="3" THEN GO TO 318
306 PAUSE 10: GO TO 302
310 BEEP .1,22: PRINT AT 17,7;"ENTER": PRINT AT 18,7;"AMOUNT INVESTED": PRINT AT 19,7;"(EX. 1000.00)": INPUT V$: GO SUB 12: LET PV=VAL V$: BEEP .1,22: PRINT AT 18,7;"INTEREST RATE ": PRINT AT 19,7;"(EX. 12.5) ": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22: PRINT AT 18,7;"NUMBER OF YEARS": PRINT AT 19,7;"(EX. 2.5) ": INPUT V$: GO SUB 12: LET N=VAL V$: BEEP .1,22:
311 LET I2=I/100: LET N2=N: LET FA=(PV*((1+I2)^N)): LET I=I2/2: LET N=N2*2: LET FS=(PV*((1+I)^N)): LET I=I2/4: LET N=N2*4: LET FQ=(PV*((1+I)^N)): LET I=I2/12: LET N=N2*12: LET FM=(PV*((1+I)^N)): LET I=I2/365: LET N=N2*365: LET FD=(PV*((1+I)^N)):
312 GO SUB 11: PRINT AT 4,3;"$ ";PV;" INVESTED (YEAR 1)": PRINT AT 5,3;"@ ";(I2*100);" % FOR ";N2;" YEAR(S)": PRINT AT 6,10;"R E S U L T": PRINT AT 7,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 8,2;"COMPOUNDED: FUTURE VALUE:": PRINT AT 9,2;"\..\..\..\..\..\..\..\..\..\..\.. \..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 10,2;"ANNUALLY = $ ";FA: PRINT AT 11,2;"SEMI-ANNUALLY= $ ";FS: PRINT AT 12,2;"QUARTERLY = $ ";FQ: PRINT AT 13,2;"MONTHLY = $ ";FM: PRINT AT 14,2;"DAILY = $ ";FD: PRINT AT 16,2;K$
313 IF INKEY$="3" THEN GO SUB 22
314 IF INKEY$="I" THEN GO TO 9955
315 IF INKEY$="1" THEN GO TO 300
316 IF INKEY$="2" THEN GO TO 8925
317 PAUSE 15: GO SUB 40: GO TO 313
318 LET TEST=1
319 PAUSE 30: PRINT AT 17,7;"ENTER": PRINT AT 18,7;"INTEREST RATE": PAUSE 40: PRINT AT 19,7;"(EX. 12.5) ": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22: PRINT AT 18,7;"# YEARS PAYMENT IS MADE": PRINT AT 19,7;"(NO DECIMAL) ": INPUT V$: GO SUB 12: LET Y=VAL V$: BEEP .1,22:
320 IF TEST=0 THEN GO TO 322
321 PRINT AT 18,7;"AMOUNT OF CONSTANT ": PRINT AT 19,7;"PAYMENT (EX. 150.00) ": INPUT V$: GO SUB 12: LET CP=VAL V$: BEEP .1,22: DIM P(Y): FOR N=1 TO Y: LET P(N)=CP: NEXT N: GO TO 323
322 DIM P(Y): FOR N=1 TO Y: PRINT AT 18,7;"AMOUNT OF EACH ": PRINT AT 19,7;"ANNUAL PAYMENT (# ";N;" ) ": INPUT V$: GO SUB 12: LET P(N)=VAL V$: BEEP .1,22: NEXT N:
323 LET YZ=Y: LET TOT=0: LET TT=0: FOR N=1 TO Y: LET FV=(P(N)*((1+I/100)^Y)): BEEP .01,25: LET Y=Y-1: LET TOT=TOT+FV: LET TT=TT+P(N): NEXT N
324 IF TEST=0 THEN GO TO 326
325 GO SUB 10: PRINT AT 6,3;"$ ";P(1);" INVESTED ANNUALLY": PRINT AT 7,3;" OVER ";YZ;" YEARS AT ";I;" %": PRINT AT 8,3;" ";"TOTALING $ ";TT;: PRINT AT 10,10;"R E S U L T": PRINT AT 11,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 13,3;"$ ";TOT;" = FUTURE VALUE": PRINT AT 16,2;K$: GO SUB 40: GO TO 327
326 GO SUB 10: PRINT AT 6,3;"$ ";TT;" INVESTED VARIABLY": PRINT AT 7,3;" OVER ";YZ;" YEARS AT ";I;" % ": PRINT AT 10,10;"R E S U L T": PRINT AT 11,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 13,3;"$ ";TOT;" = FUTURE VALUE": PRINT AT 16,2;K$: GO SUB 40:
327 IF INKEY$="1" THEN GO TO 300
328 IF INKEY$="2" THEN GO TO 8925
329 IF INKEY$="I" THEN GO TO 9955
330 IF INKEY$="3" THEN GO SUB 22
331 PAUSE 15: GO SUB 40: GO TO 327
400 LET LOC=4
401 CLS : BORDER 4: PAPER 7: INK 0: CLS : GO SUB 25: BEEP .1,22: PRINT AT 4,9;"PRESENT VALUE": PRINT AT 5,9;"\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 8,4;"<1> LUMP SUM": PRINT AT 10,4;"<2> PRESENT VALUE OF": PRINT AT 11,4;" VARIABLE RECEIPTS": PRINT AT 13,4;"<3> PRESENT VALUE OF": PRINT AT 14,5;" CONSTANT RECEIPTS": PRINT AT 15,9;"\..\..\..\..\..\..\..\..\..\..\..\..\.."
404 IF INKEY$="1" THEN GO TO 409
405 IF INKEY$="2" THEN GO TO 418
406 IF INKEY$="3" THEN GO TO 450
407 GO SUB 40: GO TO 404
409 BEEP .1,22: PRINT AT 17,7;"ENTER ": PRINT AT 18,7;"LUMP SUM PAYMENT": PRINT AT 19,7;"(EX. 150.00)": INPUT V$: GO SUB 12: LET FV=VAL V$: BEEP .1,22: PRINT AT 18,7;"# YEARS FROM NOW $ REC'D": PRINT AT 19,7;"(MUST BE >=1)": INPUT V$: GO SUB 12: LET NN=VAL V$: BEEP .1,22: GO SUB 20:
410 IF NN<1 THEN PRINT AT 18,7;"TRY AGAIN...YEARS ": BEEP .2,12:: PRINT AT 19,7;"MUST BE GREATER THAN 1": PAUSE 100: PRINT AT 18,7;O$;: PRINT AT 19,7;" ": BEEP .1,22: GO TO 410
411 PRINT AT 18,7;"INTEREST RATE ": PRINT AT 19,7;"(EX. 12.5) ": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22: LET PV=(FV/((1+(I/100))^NN)): CLS :
412 GO SUB 10: PRINT AT 6,4;"$ ";FV;" TO BE RECEIVED": PRINT AT 7,4;" ";NN;" YEARS FROM NOW": PRINT AT 8,4;" ";I;" % EST. INTEREST RATE": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";PV;"=PRESENT VALUE": PRINT AT 16,2;K$: GO SUB 40
413 IF INKEY$="3" THEN GO SUB 22
414 IF INKEY$="I" THEN GO TO 9973
415 IF INKEY$="1" THEN GO TO 400
416 IF INKEY$="2" THEN GO TO 8925
417 PAUSE 15: GO SUB 40: GO TO 413
418 IF TEST=0 THEN LET TEST=1: REM PV VARIABLE
419 BEEP .1,22: PRINT AT 17,7;"ENTER": PRINT AT 18,7;"# OF YEARS PAYMENT": PRINT AT 19,7;"RECEIVED (NO DECIMAL)": INPUT V$: GO SUB 12: LET NN=VAL V$: BEEP .1,22: DIM P(NN): FOR N=1 TO NN: PRINT AT 18,7;"AMOUNT OF RECEIPT ": PRINT AT 19,7;"(EX. 150.00) # ";N;" ": INPUT V$: GO SUB 12: LET P(N)=VAL V$: BEEP .1,22: NEXT N: PRINT AT 18,7;"INTEREST RATE ": PRINT AT 19,7;"(EX. 12.5) ": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22:
420 LET TT1=0: LET TOT=0: FOR N=1 TO NN: LET TT1=TT1+P(N): LET PV=(P(N)/(1+I/100)^N): LET TOT=TOT+PV: BEEP .015,25: NEXT N
422 IF TEST=2 THEN GO TO 500
423 IF TEST=1 THEN CLS : GO SUB 11: PRINT AT 6,4;"$ ";TT1;" RECEIVED VARIABLY": PRINT AT 7,4;" OVER ";NN;" YEARS": PRINT AT 8,4;" ";I;" % EST. INTEREST RATE": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";TOT;"=PRESENT VALUE": PRINT AT 16,2;K$: GO SUB 40
424 IF TEST=0 THEN CLS : GO SUB 11: PRINT AT 6,4;"$ ";P(1);" RECEIVED ANNUALLY": PRINT AT 7,4;" OVER ";NN;" YEARS": PRINT AT 8,4;" ";I;" % EST. INTEREST RATE";: PRINT AT 9,4;" TOTALING $ ";TT1;: PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";TOT;"=PRESENT VALUE": PRINT AT 16,2;K$: GO SUB 40
425 IF INKEY$="1" THEN GO TO 400
426 IF INKEY$="2" THEN GO TO 8925
427 IF INKEY$="3" THEN GO SUB 22
428 IF INKEY$="I" THEN GO TO 9973
430 PAUSE 15: GO SUB 40: GO TO 425
450 LET TEST=0
452 BEEP .1,22: PRINT AT 17,7;"ENTER": PRINT AT 18,7;"# OF YEARS PAYMENT": PRINT AT 19,7;"RECEIVED (NO DECIMAL)": INPUT V$: GO SUB 12: LET NN=VAL V$: BEEP .1,22: DIM P(NN): PRINT AT 18,7;"AMOUNT OF ANNUAL ": PRINT AT 19,7;"RECEIPT (EX. 150.00) ": INPUT V$: GO SUB 12: LET CON=VAL V$: BEEP .1,22: FOR N=1 TO NN: LET P(N)=CON: NEXT N: PRINT AT 18,7;"INTEREST RATE ": PRINT AT 19,7;"(EX. 12.5) ": INPUT V$: GO SUB 12: LET I=VAL V$: BEEP .1,22:
454 LET TT1=0: LET TOT=0: FOR N=1 TO NN: LET TT1=TT1+P(N): LET PV=(P(N)/(1+I/100)^N): LET TOT=TOT+PV: BEEP .015,25: NEXT N
455 IF TEST=3 THEN GO TO 500
456 GO TO 424
480 LET LOC=5
482 LET TEST=2: CLS : BORDER 5: INK 0: PAPER 7:
484 CLS : GO SUB 25: PRINT AT 4,7;"NET PRESENT VALUE": PRINT AT 5,7;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 7,7;"INVESTMENT WITH:": PRINT AT 9,3;"<1> VARIABLE RECEIPTS": PRINT AT 11,3;"<2> CONSTANT RECEIPTS": PRINT AT 13,7;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": GO SUB 40: BEEP .1,22:
485 IF INKEY$="I" THEN GO TO 9988
486 IF INKEY$="1" THEN GO TO 490
487 IF INKEY$="2" THEN GO TO 492
488 PAUSE 15: GO SUB 40: GO TO 485
490 LET TEST=2: GO TO 494
491 GO TO 494
492 LET TEST=3: GO TO 494
494 PRINT AT 17,7;"ENTER": PRINT AT 18,7;"ORIGINAL INVESTMENT": PRINT AT 19,7;"(EX. 50000)": PAUSE 40: INPUT V$: GO SUB 12: LET INV=VAL V$: BEEP .1,22: PRINT AT 18,7;" ": PRINT AT 19,7;" "
496 IF TEST=2 THEN GO TO 418
497 IF TEST=3 THEN GO TO 452
500 LET NPV=TOT-INV
504 IF TEST=2 THEN CLS : GO SUB 11: PRINT AT 6,4;"$ ";TT1;" RECEIVED VARIABLY": PRINT AT 7,4;" OVER ";NN;" YEARS": PRINT AT 8,4;" ";I;" % EST. INTEREST RATE": PRINT AT 9,4;"$ ";INV;" INITIAL INVESTMENT": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";NPV;"= N.P.V.": PRINT AT 16,2;K$: GO SUB 40
505 IF TEST=3 THEN CLS : GO SUB 11: PRINT AT 6,4;"$ ";TT1;" RECEIVED VARIABLY": PRINT AT 7,4;" OVER ";NN;" YEARS": PRINT AT 8,4;" ";I;" % EST. INTEREST RATE": PRINT AT 9,4;"$ ";INV;" INITIAL INVESTMENT": PRINT AT 11,10;"R E S U L T": PRINT AT 12,10;"\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 14,4;"$ ";NPV;" = N.P.V.": PRINT AT 16,2;K$: GO SUB 40
506 IF INKEY$="I" THEN GO TO 9988
507 IF INKEY$="1" THEN GO TO 480
508 IF INKEY$="2" THEN GO TO 8925
509 IF INKEY$="3" THEN GO SUB 22
510 PAUSE 15: GO SUB 40: GO TO 506
600 CLS : PAPER 4: INK 0: BORDER 6: FLASH 1: PRINT AT 6,9;"SAVE FIN PACK\*": FLASH 0: PRINT AT 8,11;"COUNTDOWN:": PRINT AT 10,5;"\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::": PRINT AT 12,5;"10 9 8 7 6 5 4 3 2 1 0": PRINT AT 14,5;"\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::":
604 FLASH 1: PRINT AT 16,7;"ENTER <1> TO ABORT": FLASH 0: BRIGHT 1: FOR N=1 TO 20: PAUSE 20: BEEP .05,30: PRINT AT 12,N+4;"\::\::": GO SUB 628: GO SUB 640: NEXT N: PRINT AT 12,3;"FIN PACK\* SAVE IN PROGRESS": PRINT AT 16,7;" ": SAVE "exec" LINE 9000: GO TO 631
628 IF INKEY$="1" THEN GO TO 8925
629 RETURN
631 CLS : FLASH 1: PRINT AT 21,2;"DEPRESS ANY KEY": BEEP .5,25: SAVE "EZCODE"CODE USR "a",21*8: GO TO 1
632 GO TO 8925
640 IF N=6 THEN PRINT AT 18,8;"TURN RECORDER ON"
641 RETURN
645 STOP
650 CLS : PAPER 2: INK 0: BORDER 1: FLASH 1: PRINT AT 6,6;"TERMINATE FIN PACK\*": FLASH 0: PRINT AT 8,11;"COUNTDOWN:": PRINT AT 10,5;"\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::": PRINT AT 12,5;"10 9 8 7 6 5 4 3 2 1 0": PRINT AT 14,5;"\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::\::":
654 FLASH 1: PRINT AT 16,7;"ENTER <R> TO ABORT": FLASH 0: BRIGHT 1: FOR N=1 TO 20: PAUSE 20: BEEP .05,30: PRINT AT 12,N+4;"\::\::": GO SUB 678: NEXT N: NEW
678 IF INKEY$<>"" THEN GO TO 8925
679 RETURN
8900 REM ITIALIZE-INTRODUCE
8902 LET S$="F I N P A C K \* F I N P A C K"
8904 LET A$="\ COPYRIGHT 1983 EZ-SOFT COMPANY\::"
8905 LET B$=" "
8906 LET TONE=40
8907 FOR N=1 TO 11: PRINT S$: PRINT B$: BEEP .005,TONE: LET TONE=TONE-2: NEXT N
8908 LET CT=15
8909 INK 1: PAPER 1: CLS : FOR n=1 TO 3: PRINT AT 22-n,0;" ": NEXT n: FOR N=4 TO 7: PAPER COL: INK n: PRINT AT CT,0;" ";A$: BEEP .05,TONE: LET TONE=TONE+4: LET COL=INT (COL+.75): LET CT=CT-2: NEXT N: FOR N=1 TO 3: INK 1: PAPER 5: PRINT AT CT,0; INVERSE 1;"F I N P A C K $ F I N P A C K\*": LET CT=CT-2: NEXT N
8910 FOR N=1 TO 5: BEEP .05,TONE: LET TONE=TONE-10: NEXT N
8911 FOR N=1 TO 9: LET TONE=TONE+N: BEEP .05,TONE: NEXT N: FOR N=1 TO 9: LET TONE=TONE-N+3: BEEP .05,TONE: NEXT N: FOR N=1 TO 5: LET TONE=TONE+2: BEEP .04,TONE: NEXT N: BEEP 1,(TONE+1)
8912 FOR N=1 TO 3
8913 BORDER 2: PAUSE 5
8914 BORDER 3: PAUSE 5
8915 BORDER 4: PAUSE 5
8916 NEXT N
8919 PAUSE 50
8924 CLS : RETURN
8925 CLS : BORDER 4: PAPER 6: INK 0: CLS : CLEAR : LET R$="--->": LET E$="ENTER SELECTION": LET O$=" ": LET K$="<1>=CONTINUE <2>=END <3>=COPY": LET L=1
8926 FOR N=0 TO 31: PRINT AT 0,N;"\::";: PRINT AT 21,n;;"\::": NEXT N: FOR N=0 TO 21: PRINT AT N,0;"\::": PRINT AT N,31;"\::": NEXT N
8928 LET LOC=0: PRINT AT 3,6;"F I N P A C K \*": PRINT AT 4,6;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": LET TEST=0: PRINT AT 6,3;"<1> SIMPLE INTEREST": PRINT AT 7,3;"<2> LOAN PAYMENT/RETIREMENT": PRINT AT 8,3;"<3> FUTURE VALUE": PRINT AT 9,3;" (COMPOUND GROWTH)": PRINT AT 10,3;"<4> PRESENT VALUE": PRINT AT 11,3;"<5> NET PRESENT VALUE": PRINT AT 12,3;"<6> SAVE EZ-SOFT FIN PACK\*": PRINT AT 13,3;"<7> TERMINATE FIN PACK\*": PRINT AT 14,3;"<8> INSTRUCTIONS"
8929 BEEP .05,12
8930 FOR N=17 TO 19: PRINT AT N,3;R$: INK 1: PRINT AT 19,9;E$: INK 0: NEXT N
8931 IF INKEY$="1" THEN GO TO 50
8932 IF INKEY$="2" THEN GO TO 200
8933 IF INKEY$="3" THEN GO TO 300
8934 IF INKEY$="4" THEN GO TO 400
8935 IF INKEY$="5" THEN GO TO 480
8936 IF INKEY$="6" THEN GO TO 600
8937 IF INKEY$="7" THEN GO TO 650
8938 IF INKEY$="8" THEN GO TO 9896
8952 FOR N=17 TO 19: PRINT AT N,9;O$: PAUSE 20: NEXT N
8953 GO TO 8930
9000 LET T=.1: FOR N=1 TO 5: BEEP T,.25: LET T=T-.025: NEXT N
9001 LOAD "EZCODE"CODE
9002 GO TO 1
9896 CLEAR : LET LOC=0: REM "INST"
9897 LET n=1: LET INK=0: BORDER 3: INK 0: BEEP .25,25: CLS : FOR A=1 TO 21: LET INK=INK+1: PRINT " FIN PACK\* INSTRUCTION MODULE": RESTORE 9910:
9898 FOR A=1 TO 21: LET INK=INK+1: PRINT " FIN PACK\* INSTRUCTION MODULE":
9899 INK INK: PAUSE 4: IF INK=6 THEN LET INK=0:
9900 NEXT A: PAUSE 50: CLS
9901 BORDER 3: PAPER 7: INK 0: BEEP .25,35: READ x,y: LET n=n+1
9902 PLOT 0,145: DRAW 90,+30: PLOT 168,175: DRAW 86,-30
9905 PLOT x,y: DRAW 80,0: PLOT x,y-30: DRAW 0,30: PLOT x,y-30: DRAW 80,0: DRAW 0,30:
9910 DATA 88,175,1,130,88,130,175,130,41,90,128,90,1,50,88,50,175,50
9919 IF n<10 THEN GO TO 9901
9920 REM FOR n=0 TO 21: PRINT AT n,0;n;: NEXT n
9921 REM LET x=0
9922 REM FOR n=0 TO 31: PRINT AT 4,n;x;
9923 REM LET x=x+1
9924 REM IF x=10 THEN LET x=0
9925 REM NEXT n
9930 PAPER 6: PRINT AT 1,14;"MAIN": BEEP .2,30: PRINT AT 2,14;"MENU": BEEP .2,30: PRINT AT 6,1;"SIMPLE": BEEP .2,30: PRINT AT 7,1;"INTEREST": BEEP .2,30: PRINT AT 8,1;"MODULE 1": BEEP .2,30: PRINT AT 6,12;"LOAN ": BEEP .2,30: PRINT AT 7,12;"CALC": BEEP .2,30: PRINT AT 8,12;"MODULE 2": BEEP .2,30: PRINT AT 6,23;"FUTURE": BEEP .2,30: PRINT AT 7,23;"VALUE": BEEP .2,30: PRINT AT 8,23;"MODULE 3": BEEP .2,30:
9932 PRINT AT 11,6;"PRESENT": BEEP .2,30: PRINT AT 12,6;"VALUE": BEEP .2,30: PRINT AT 13,6;"MODULE 4": BEEP .2,30: PRINT AT 11,17;"NET PRES.": BEEP .2,30: PRINT AT 12,17;"VALUE": BEEP .2,30: PRINT AT 13,17;"MODULE 5": BEEP .2,30:
9933 PRINT AT 16,1;"SAVE": BEEP .2,30: PRINT AT 17,1;"ROUTINE": BEEP .2,30: PRINT AT 18,1;"MODULE 6": BEEP .2,30: PRINT AT 16,12;"TERMINATE": BEEP .2,30: PRINT AT 17,12;"ROUTINE": BEEP .2,30: PRINT AT 18,12;"MODULE 7": BEEP .2,30: PRINT AT 16,23;"INST-": BEEP .2,30: PRINT AT 17,23;"RUCTION": BEEP .2,30: PRINT AT 18,23;"MODULE 8": BEEP .2,30
9934 PRINT AT 4,0;"FIN PACK\* CONSISTS OF 8 MODULES": BEEP .125,35
9935 PRINT AT 21,1;"PRESS ANY KEY TO CONTINUE"
9936 IF INKEY$<>"" THEN GO TO 9940
9937 IF INKEY$<>"" THEN GO TO 9940
9938
9939 GO TO 9936
9940 BEEP .1,25: CLS : PRINT AT 1,2;"EACH MODULE MAY HAVE SEVERAL SUB-MODULES WITHIN IT. THESE AREDISPLAYED ON THE SCREENS THAT FOLLOW.": PRINT AT 6,0;"NOTE": PRINT AT 7,2;"***PRESSING (I) WHILE IN THE 'SELECTION' MODE OF ANY MODULE WILL AUTOMATICALLY PROVIDE INSTRUCTIONS.": PRINT AT 12,2;"***PRESSING (R) WILL RETURN YOU TO THE MAIN MENU.": PRINT AT 21,1;"PRESS ANY KEY TO CONTINUE"
9942 IF INKEY$<>"" THEN GO TO 9944
9943 GO TO 9942
9944 GO SUB 9945: GO SUB 9950
9945 BORDER 1: CLS : BEEP .1,25: CLS : PRINT AT 0,0;"SIMPLE INTEREST MODULE 1 ": PRINT AT 1,1;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,2;"SIMPLE INTEREST IS THE AMOUNT OF INTEREST OR 'RENT' ONE RECEIVES WHEN THE INTEREST IS COMPUTED A SINGLE TIME FOR THE ENTIRE LOAN PERIOD.": PRINT AT 9,2;"EXAMPLE : SUPPOSE YOU BORROW $1000 FOR 1 YEAR AT 10%": PRINT AT 12,0;"INTEREST=PRINCIPALxINT.RATExTIME": PRINT AT 14,0;" $100 = $1000 x .10 x 1 (YEAR)": PRINT AT 16,0;"THUS, YOU MUST PAY BACK:": PRINT AT 18,1;"$1100 ($1000+$100)PRINC+INT.": PRINT AT 19,0;"________________________________": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9946 IF INKEY$<>"" THEN GO TO 9948:
9947 GO TO 9946
9948 IF LOC<>2 AND LOC<>0 THEN GO TO 50
9949 BORDER 2: CLS : BEEP .1,25: PRINT AT 0,0;"LOAN CALCULATOR MODULE 2": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"1. LOAN PAYMENT CALCULATOR 2. # YEARS REQ'D TO PAYOFF LOAN": PRINT AT 6,0;"LOAN PAYMENT CALLS FOR YOU TO ENTER:": PRINT AT 8,9;"A. LOAN AMOUNT": PRINT AT 9,9;"B. INTEREST RATE": PRINT AT 10,9;"C. LOAN PERIOD": PRINT AT 11,9;"D. # OF PAYM'TS/YEAR": PRINT AT 13,0;"SUPPOSE YOU WISH TO BUY A HOUSE FOR $55,000. YOUR BANK OFFERS 30YEAR MORTGAGES AT 12%. THIS SUB-MODULE PROVIDES THE MONTHLY PAYMENT AMOUNT(10% DOWN).": PRINT AT 19,2;"$50,000@12%(30YRS)=$514.30": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9950 IF INKEY$<>"" THEN GO TO 9952
9951 GO TO 9950
9952 CLS : BEEP .1,25: PRINT AT 0,0;"LOAN CALCULATOR MODULE 2B": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"2. #YRS REQ'D TO PAYOFF LOAN": PRINT AT 5,0;"DATA REQUIRED": PRINT AT 7,5;"A. # PAYMENTS/YEAR": PRINT AT 8,5;"B. INTEREST RATE": PRINT AT 9,5;"C. LOAN AMOUNT (PRINCIPAL)": PRINT AT 10,5;"D. PAYMENT AMOUNT": PRINT AT 12,0;"SUPPOSE YOU WANT TO BUY A CAR AND CAN AFFORD $250/MONTH. THE CAR YOU WANT COSTS $6,000. HOW LONG WILL IT TAKE TO PAYOFF THE LOAN IF RATES ARE AT 12%": PRINT AT 18,0;"$6,000@12%,$250/MO.=2.3 YEARS": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9953 IF INKEY$<>"" THEN GO TO 9955
9954 GO TO 9953
9955 IF LOC<>3 AND LOC<>0 THEN GO TO 200
9960 BORDER 3: CLS : BEEP .1,25: PRINT AT 0,0;"FUTURE VALUE MODULE 3": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"THE CONCEPT OF SIMPLE INTEREST DESCRIBED IN MODULE 1 IS THE BASIS OF MONEY GROWTH CALCULAT- IONS. IN THE REAL WORLD, HOWEVERINTEREST IS COMPOUNDED-YOU EARN INTEREST ON YOUR INTEREST.": PRINT AT 11,0;"THIS MODULE HAS 3 SUB-MODULES:": PRINT AT 13,5;"A. INVESTMENT GROWTH": PRINT AT 14,5;"B. FV OF VARIABLE PAYMENTS": PRINT AT 15,5;"C. FV OF CONSTANT PAYMENTS": PRINT AT 17,0;"EACH SUB-MODULE WILL BE": PRINT AT 18,0;"DESCRIBED NEXT.": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9961 IF INKEY$<>"" THEN GO TO 9963
9962 GO TO 9961
9963 CLS : BEEP .1,25: PRINT AT 0,0;"FUTURE VALUE MODULE 3A": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"1. INVESTMENT GROWTH:": PRINT AT 5,0;"DATA REQUIRED": PRINT AT 7,5;"A. AMOUNT INVESTED": PRINT AT 8,5;"B. INTEREST RATE": PRINT AT 9,5;"C. INVESTMENT PERIOD": PRINT AT 11,0;"SUPPOSE YOU INVESTED $1,000@12% FOR 10 YEARS. THIS MODULE SHOWS THE GROWTH OF YOUR INVESTMENT UNDER 5 DIFFERENT COMPOUNDING METHODS:": PRINT AT 17,1;"$1,000@12%,10YRS=$3,105(ANNUAL)": PRINT AT 18,1;" $3,319(DAILY)": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9964 IF INKEY$<>"" THEN GO TO 9966
9965 GO TO 9964
9966 CLS : BEEP .1,25: PRINT AT 0,0;"FUTURE VALUE MODULE 3B": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"2. FV OF VARIABLE PAYM'TS": PRINT AT 5,0;"DATA REQUIRED": PRINT AT 7,5;"A. INTEREST RATE": PRINT AT 8,5;"B. # YEARS PAYM'T IS MADE": PRINT AT 9,5;"C. EACH ANNUAL PAYMENT": PRINT AT 11,0;"SUPPOSE YOU DECIDED TO SAVE $1,000 THIS YEAR AND $2,000 NEXTYEAR. IF RATES ARE @ 12%, HOW MUCH WOULD THIS BE WORTH A YEAR AFTER YOUR 2ND DEPOSIT?": PRINT AT 17,2;"$1,000,$2,000@12%=$3,494.40": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9967 IF INKEY$<>"" THEN GO TO 9969
9968 GO TO 9967
9969 CLS : BEEP .1,25: PRINT AT 0,0;"FUTURE VALUE MODULE 3C": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"3. FV OF CONSTANT PAYMENTS": PRINT AT 5,0;"DATA REQUIRED": PRINT AT 7,5;"A. INTEREST RATE": PRINT AT 8,5;"B. # YEARS PAYMENT MADE": PRINT AT 9,5;"C. ANNUAL CONSTANT PAYMENT": PRINT AT 11,0;"SUPPOSE YOU DECIDE TO OPEN A BANK ACCOUNT AND DEPOSIT $2,000/YEAR FOR 20YRS UNTIL YOU RETIRE.IF RATES ARE 10%, HOW MUCH WILL YOU HAVE FOR RETIREMENT?": PRINT AT 17,2;"$2,000(20YRS)@10%=$126,005": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9970 IF INKEY$<>"" THEN GO TO 9972
9971 GO TO 9970
9972 IF LOC<>4 AND LOC<>0 THEN GO TO 300
9973 BORDER 4: CLS : BEEP .1,25: PRINT AT 0,0;"PRESENT VALUE MODULE 4": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"THIS MODULE HAS 3 SUB-MODULES:": PRINT AT 5,5;"1. PV OF A LUMP SUM": PRINT AT 6,5;"2. PV OF VARIABLE RECEIPTS": PRINT AT 7,5;"3. PV OF CONSTANT RECEIPTS": PRINT AT 9,0;"PRESENT VALUE IS THE OPPOSITE OFFUTURE VALUE(MODULE 3). IT HELPSONE TO DETERMINE THE VALUE TODAYOF SOME PAYMENT IN THE FUTURE GIVEN SOME INTEREST RATE. WORKING THROUGH THE MODULE WILL CLARIFY THIS CONCEPT FOR YOU.": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9974 IF INKEY$<>"" THEN GO TO 9976
9975 GO TO 9974
9976 CLS : BEEP .1,25: PRINT AT 0,0;"PRESENT VALUE MODULE 4A": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 2,0;"1. PV OF A LUMP SUM": PRINT AT 3,0;"DATA REQUIRED:": PRINT AT 5,2;"A. LUMP SUM RECEIPT": PRINT AT 6,2;"B. # YRS FROM NOW PAYM'T REC'D": PRINT AT 7,2;"C. INTEREST RATE": PRINT AT 9,0;"SUPPOSE YOU WISH TO SELL A BOAT FOR $10,000. THE BUYER AGREES TOTHE PRICE BUT CAN ONLY PAY YOU 2YEARS FROM NOW. SINCE IF HE PAIDYOU NOW, THE $10,000 COULD EARN INTEREST IN THE BANK, YOU WILL BE LOSING THAT INTEREST. RATES ARE 12%. WHAT IS THE VALUEOF THE PAYMENT?": PRINT AT 19,1;"$10,000(2YRS)12%=$7,971.94": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9977 IF INKEY$<>"" THEN GO TO 9979
9978 GO TO 9977
9979 CLS : BEEP .1,25: PRINT AT 0,0;"PRESENT VALUE MODULE 4B": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"PV OF VARIABLE RECEIPTS": PRINT AT 5,0;"DATA REQUIRED": PRINT AT 7,5;"A. #YRS PAYM'T REC'D": PRINT AT 8,5;"B. EACH ANNUAL PAYM'T": PRINT AT 9,5;"C. INTEREST RATE": PRINT AT 11,0;"SUPPOSE YOU SELL THE SAME BOAT BUT THE BUYER OFFERS TO PAY YOU IN 3 ANNUAL INSTALLMENTS:$2,000;$4,000; $5,000 TOTALLING $11,000. IS THIS MORE THAN $10,000 PAID TODAY? NO!": PRINT AT 19,1;"$11,000(3YRS)12%=$8533.39": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9981 IF INKEY$<>"" THEN GO TO 9983
9982 GO TO 9981
9983 CLS : BEEP .1,25: PRINT AT 0,0;"PRESENT VALUE MODULE 4C": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"PV OF CONSTANT PAYMENTS": PRINT AT 5,0;"THIS SUB-MODULE PERFORMS THE SAME FUNCTION AS THE PV OF VARIABLE PAYMENTS SUB-MODULE.": PRINT AT 9,0;"THE ONLY DIFFERENCE IS THAT THE RECEIPT AMOUNT IS THE SAME EACH YEAR.": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE":
9984 IF INKEY$<>"" THEN GO TO 9987
9985 GO TO 9984
9987 IF LOC<>5 AND LOC<>0 THEN GO TO 400
9988 BORDER 5: CLS : BEEP .1,25: PRINT AT 0,0;"NET PRESENT VALUE MODULE 5": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"THIS MODULE HAS 2 SUB-MODULES": PRINT AT 5,2;"A. NPV W/ CONSTANT RECEIPTS": PRINT AT 6,2;"B. NPV W/ VARIABLE RECEIPTS": PRINT AT 8,0;"NET PRESENT VALUE IS MERELY AN EXTENSION OF PRESENT VALUE. BEYOND CALCULATING THE PRESENT VALUE OF SOME FUTURE CASH FLOW, IT ALSO NETS-OUT THE ORIGINAL INVESTMENT COST. THE FOLLOWING EXAMPLE WILL CLARIFY THIS USING THE VARIABLE RECEIPT SUB-MODULE.THE CONSTANT RECEIPT SUB-MODULE IS, AGAIN, FUNCTIONALLY SIMILAR.": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9989 IF INKEY$<>"" THEN GO TO 9991
9990 GO TO 9989
9991 CLS : BEEP .1,25: PRINT AT 0,0;"NET PRESENT VALUE MODULE 5A": PRINT AT 1,0;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..": PRINT AT 3,0;"NPV W/VARIABLE RECEIPTS": PRINT AT 5,2;"DATA REQUIRED": PRINT AT 6,4;"A. ORIGINAL INVESTMENT": PRINT AT 7,4;"B. # YEARS PAYMENT RECEIVED": PRINT AT 8,4;"C. EACH ANNUAL PAYMENT": PRINT AT 9,4;"D. INTEREST RATE": PRINT AT 11,0;"SUPPOSE YOU BUY AN APARTMENT BUILDING FOR $100,000. RENT IS REC'D FOR 3 YEARS:$30,000; $36,000; $42,000. IN THE LAST YEAR, YOU SELL FOR $100,000. RATES ARE 12%. IS THIS VENTURE PROFITABLE?(USE $142,000 FOR THE3RD RECEIPT)IF THE ANSWER IS + THEN IT IS PROFITABLE. ANSWER= $56,557.": PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE"
9992 IF INKEY$<>"" THEN GO TO 9998
9995 GO TO 9992
9998 IF LOC=5 THEN GO TO 480
9999 BORDER 6: CLS : PRINT AT 1,0;"FIN PACK\* IS A POWERFUL SOFTWAREPRODUCT PROVIDED BY EZ-SOFT TO ASSIST YOU IN MAKING DECISIONS ABOUT THE RELATIVE MERIT OF ALTERNATIVE FINANCIAL TRANSACTIONS.": PRINT AT 11,0;" G O O D L U C K ! ! ": PAUSE 350: FOR N=1 TO 10: FLASH 1: PRINT AT 11,0;" G O O D L U C K ! ! !": FLASH 0: BEEP .05,25: NEXT N: LET LOC=0: GO TO 8925
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

