130 VTAB 5: PRINT "PROGRAM WILL CALCULATE THE INTERNAL RATEOF RETURN OR NET PRESENT OR FUTURE VALUEOF UP TO 40 CASH FLOWS. CASH FLOWS MAYHAVE UP TO 7 DIGITS (1234.56 OR 1234567)
140 VTAB 10: PRINT "GET DATA FROM:": PRINT : HTAB 3: INVERSE : PRINT "D";: NORMAL : PRINT "IF FILE ON DISK": PRINT : HTAB 3: INVERSE : PRINT "I";: NORMAL : PRINT "RR CALCULATOR FILE ON DISK"
160 VTAB 10: HTAB 16: POKE -16368,0: GET A$: PRINT A$: IF A$ < >"Q" THEN 190
170 VTAB 20: CALL -958: PRINT "ARE YOU SURE? "; CHR$(7);: POKE -16368,0: GET A$: PRINT A$: IF A$ = "Y" OR A$ = CHR$(121) THEN POKE 216,0: TEXT : HOME : END
180 GOTO 110
190 IF A$ = "D" THEN GOSUB 1940: GOSUB 2170: GOSUB 1190: GOTO 230
200 IF A$ = "I" THEN GOSUB 1940: GOSUB 2020: GOSUB 1190: GOTO 230
210 IF A$ = "K" THEN GOSUB 1440: GOTO 230
220 PRINT CHR$(7): GOTO 140
230 VTAB 23: CALL -958: INVERSE : PRINT "C";: NORMAL : PRINT "HANGE A CASH FLOW ";: INVERSE : PRINT "P";: NORMAL : PRINT "ROCEED ";
240 INVERSE : PRINT "Q";: NORMAL : PRINT "UIT ";: POKE -16368,0: GET A$: IF A$ < >"C" AND A$ < >"P" AND A$ < >"Q" THEN VTAB 22: PRINT CHR$(7): GOTO 230
250 IF A$ = "Q" THEN 580
260 PRINT : IF A$ = "P" THEN 320
270 VTAB 23: CALL -958: INPUT "CHANGE WHICH CASH FLOW #? ";I$:I = VAL(I$): IF I$ < >"Q" AND ((I <1 AND I$ < >"0") OR I >39) THEN VTAB 22: PRINT CHR$(7): GOTO 270
280 IF I$ = "Q" THEN 230
290 IF I >N THEN N = I: REM IF I>N THEN ADDING CASH FLOWS
370 VTAB 7: HTAB 21: POKE -16368,0: GET IR$: PRINT IR$: IF IR$ < >"F" AND IR$ < >"Q" AND IR$ < >"P" AND IR$ < >"I" THEN PRINT CHR$(7): GOTO 370
380 HOME : IF IR$ = "Q" THEN 510
390 IF IR$ = "P" THEN PRINT SPC( 5)"NET PRESENT VALUE CALCULATION"
400 IF IR$ = "F" THEN PRINT SPC( 5)"NET FUTURE VALUE CALCULATION"
410 IF IR$ = "I" THEN PRINT SPC( 3);"INTERNAL RATE OF RETURN CALCULATION": VTAB 9: CALL -868: PRINT "STANDARD OR MODIFIED IRR? (S/M).......";: POKE -16368,0: GET SM$: PRINT SM$: IF SM$ < >"S" AND SM$ < >"M" THEN PRINT CHR$(7): HOME : GOTO 410
420 VTAB 11: CALL -868: PRINT "END OR MID YEAR DISCOUNTING? (E/M)....";: POKE -16368,0: GET B$: PRINT B$: IF B$ < >"E" AND B$ < >"M" THEN PRINT CHR$(7): GOTO 420
430 IF B$ = "E" THEN D = 0:M = 0
440 IF B$ = "M" THEN D = .5:M = .5
450 IF N = 1 THEN C$ = "N": GOTO 470
460 VTAB 13: CALL -868: PRINT "LAST CF IN SAME YR AS THE ONE BEFORE?.";: POKE -16368,0: GET C$: PRINT C$: IF C$ < >"Y" AND C$ < >"N" THEN PRINT CHR$(7): GOTO 460
530 INVERSE : PRINT "S";: NORMAL : PRINT "AVE ";: INVERSE : PRINT "N";: NORMAL : PRINT "EW FILE ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT ";: POKE -16368,0: GET A$: PRINT A$
540 IF A$ = "R" THEN 230
550 IF A$ = "P" THEN 1760
560 IF A$ = "S" THEN 2600
570 IF A$ = "N" THEN TEXT : RUN
580 IF A$ = "Q" THEN VTAB 22: CALL -958: PRINT : PRINT "ARE YOU SURE? "; CHR$(7);: POKE -16368,0: GET A$: PRINT A$: IF A$ = "Y" OR A$ = CHR$(121) THEN POKE 216,0: TEXT : HOME : END
590 GOTO 520
600 VTAB 22: PRINT CHR$(7): GOTO 520
610 REM IRR CALCULATION ROUTINE
620 R = 0: REM CALCULATION USES THE NEWTON-RAPHSON METHOD
630 GOSUB 2830
640 X = CF(0):X1 = 0
650 IF N = 1 THEN 710
660 FOR I = 1 TO (N -1)
670 T = CF(I) * EXP( -(I -D) *R)
680 X = X +T
690 X1 = X1 +( -(I -D) *T)
700 NEXT
710 X = X +(CF(N) * EXP( -(N -M) *R))
720 X1 = X1 -(N -M) *CF(N) * EXP( -(N -M) *R)
730 R1 = R +( -X/X1)
740 IF ABS(R1 -R) <.00005 THEN 770: REM CALCULATE TO AN ACCURACY OF .005%
750 R = R1
760 GOTO 640
770 R = INT(( EXP(R) -1) *10000 +.5)
780 RETURN
790 REM NPV/NFV CALCULATION
800 IF IR$ = "P" THEN VTAB 15: INPUT "NPV DISCOUNT RATE? (%) ";RI$
810 IF IR$ = "F" THEN VTAB 15: INPUT "NFV INTEREST RATE? (%) ";RI$
820 IR = VAL(RI$): VTAB 15: HTAB 24: PRINT IR
830 GOSUB 2830
840 NR = 1 +IR *.01
850 X = CF(0)
860 IF N = 1 THEN 900
870 FOR I = 1 TO (N -1)
880 X = X +CF(I)/(NR ^(I -D))
890 NEXT
900 X = X +CF(N)/(NR ^(N -M))
910 IF IR$ = "F" THEN X = (X *(NR ^(N -M)))
920 IF ABS(X) > = 10000 THEN X$ = STR$( INT(X +.5)): GOTO 510
1450 PRINT SPC( 2);"ENTER CASH OUTLAYS AS NEGATIVE (-)"
1460 PRINT SPC( 2);"ENTER CASH RECEIPTS AS POSITIVE (+)"
1470 PRINT SPC( 5);"INITIAL INVESTMENT IS CF(0)": VTAB 15: PRINT SPC( 8)"(ENTER Q FOR MAIN MENU)": VTAB 7
1480 INPUT "NUMBER OF CASH FLOWS EXCLUDING CF0? ";NU$:N = VAL(NU$): IF NU$ = "Q" THEN 110
1490 IF N <1 OR N >39 THEN VTAB 14: CALL -958: PRINT CHR$(7)"NUMBER OF CASH FLOWS MUST BE": PRINT "BETWEEN 1 AND 39 EXCLUDING CF0": PRINT : PRINT "PRESS RETURN TO CONTINUE": GOSUB 2840: GOTO 1440
1500 GOSUB 1690
1510 GOSUB 1650
1520 PRINT : VTAB 23: PRINT " PRESS " CHR$(34)"S" CHR$(34)" FOR SAME AS PRIOR CASH FLOW"