Compucolor.org – Virtual Media

Listing of file='ANNUIT.BAS;01' on disk='vmedia/personal_finance_vol_1-sector.ccvf'

100 TM= 256* PEEK (32941)+ PEEK (32940)
110 Z= TM+ 8:AD= 33283:GOSUB 160:TM= TM+ 1
120 X= 0:Y= 19:H= 4:W= 64:C= 1
130 Z= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 160
140 Z= 128- W- W:AD= TM+ 149:GOSUB 160:POKE TM+ 129,H- 1
150 POKE TM+ 131,W* (C+ 1):POKE TM+ 143,35* (1- C):GOTO 170
160 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN
170 DEF FN A(U)= .01* INT (100* U+ .5)
180 DEF FN C(X)= INT (X* 100- INT (X)* 100+ .5)/ 100
190 DEF FN I(S)= 5- LEN (STR$ (S))
200 DEF FN J(A2)= 14- LEN (STR$ (INT (A2)))
210 DEF FN K(B)= 25- LEN (STR$ (INT (B)))
220 DEF FN L(X9)= 38- LEN (STR$ (INT (X9)))
230 DEF FN M(Y)= 50- LEN (STR$ (INT (Y)))
240 PLOT 12,27,24
250 GOTO 290
260 L= L+ 1:IF L= 23THEN ZZ= CALL (1):L= 22
270 GOSUB 280:PRINT SPC( 63)""
280 PLOT 3,0,L:RETURN
290 PLOT 3,24,0,14
300 PRINT "*  ANNUITY  *"
310 S= 0
320 PRINT "THIS PROGRAM COMPUTES PAYMENT AND WITHDRAWAL ANNUITIES."
330 GOTO 2480
340 PLOT 3,0,13:PRINT "ANNUITY TYPE (1-SAVINGS OR 2-LOAN): ";
350 INPUT "";A:REM 
360 GOTO 390
370 A= 3- A
380 PLOT 3,39,13:PRINT A
390 ON AGOTO 460,1090
400 PLOT 17,3,0,13,11,3,0,13
410 PRINT "   ANSWER 1 OR 2 PLEASE.":GOTO 430
420 FOR I= 1TO 200:PLOT 3,64,0:NEXT :RETURN
430 GOSUB 420
440 PLOT 18,3,0,13,11,3,0,13
450 GOTO 340
460 IF S= 1THEN 540
470 PLOT 3,0,14:PRINT "WHICH VARIABLE IS UNKNOWN (N, A, I OR R)";
480 INPUT "?  ";D$
490 IF D$= "N"THEN D= 1
500 IF D$= "A"THEN D= 2
510 IF D$= "I"THEN D= 3
520 IF D$= "R"THEN D= 4
530 IF D$< > "N"AND D$< > "A"AND D$< > "I"AND D$< > "R"THEN 550
540 ON DGOTO 590,690,780,840
550 PLOT 3,0,14,11,3,0,14:GOSUB 560:GOTO 570
560 PRINT "   ANSWER N, A, I OR R  PLEASE.":GOSUB 420:RETURN
570 PLOT 3,0,14,11,3,0,14
580 GOTO 470
590 PRINT "WHAT ARE A($),I(PCT),R($) ";
600 INPUT "?";A1,I1,R1
610 GOSUB 2760
620 I1= I1/ 100
630 N1= LOG ((A1* I1/ R1)+ 1)/ LOG (1+ I1)
640 N1= INT (N1+ .499)
650 GOSUB 2770
660 PRINT "NUMBER OF PERIODS : N = ";
670 PRINT N1
680 GOTO 920
690 PRINT "WHAT ARE N(INTEGER),I(PCT),R($) ";
700 INPUT "?";N1,I1,R1
710 GOSUB 2760
720 I1= I1/ 100
730 A1= R1* ((1+ I1)^ N1- 1)/ I1
740 GOSUB 2770
750 PRINT "AMOUNT AT END OF N PERIODS : A = ";
760 PRINT "$"INT (A1);".";RIGHT$ (STR$ (INT (FN C(A1)* 100+ 1000.5)),2)
770 GOTO 920
780 PRINT "WHAT ARE N(INTEGER),A($),R($) ";
790 INPUT "?";N1,P1,R1
800 PRINT
810 IF N1* R1> P1THEN 2420
820 GOSUB 2760
830 GOTO 1980
840 PRINT "WHAT ARE N(INTEGER),A($),I(PCT) ";
850 INPUT "?";N1,A1,I1
860 GOSUB 2760
870 I1= I1/ 100
880 R1= A1* I1/ ((1+ I1)^ N1- 1)
890 GOSUB 2770
900 PRINT "PAYMENT EACH PERIOD : R = ";
910 PRINT "$"INT (R1);".";RIGHT$ (STR$ (INT (FN C(R1)* 100+ 1000.5)),2)
920 PLOT 3,24,23:PRINT "---------------"
930 PRINT "ENTER NUMBER OF OF DESIRED ALTERNATIVE:"
940 PRINT "   1 - ANOTHER CASE, SAME TYPE"
950 PRINT "   2 - ANOTHER CASE, DIFFERENT UNKNOWN"
960 PRINT "   3 - ANOTHER CASE, OTHER ANNUITY TYPE"
970 PRINT "   4 - TOTAL INTEREST OVER 'N' PERIODS"
980 PRINT "   5 - TABLE OF WITHDRAWALS, PRINCIPAL AND INTEREST"
990 PRINT "   6 - END PROGRAM "
1000 INPUT "YOUR CHOICE? ";S$:S= VAL (S$)
1010 IF S< > 6THEN 2580
1020 GOTO 2470
1030 IF S= 1OR S= 2THEN 390
1040 IF S= 3THEN 370
1050 IF A< > 1THEN 1090
1060 PRINT
1070 PRINT "ALTERNATIVE NOT APPLICABLE TO PAYMENT ANNUITIES."
1080 GOTO 920
1090 ON SGOTO 1180,1100,1100,1320,1320
1100 PLOT 3,0,14
1110 PRINT "WHICH VARIABLE IS UNKNOWN (N, P, I OR R)";
1120 INPUT "?  ";A1$
1130 IF A1$= "N"THEN A1= 1
1140 IF A1$= "P"THEN A1= 2
1150 IF A1$= "I"THEN A1= 3
1160 IF A1$= "R"THEN A1= 4
1170 IF A1$< > "N"AND A1$< > "P"AND A1$< > "I"AND A1$< > "R"THEN 1190
1180 ON A1GOTO 1230,1850,1940,2300
1190 PLOT 3,0,14,11,3,0,14
1200 PRINT "   ANSWER N, P, I OR R  PLEASE.":GOSUB 420:GOTO 1100
1210 PLOT 3,0,14,11,3,0,14
1220 GOTO 1110
1230 PRINT "WHAT ARE P($),I(PCT),R($) ";
1240 INPUT "?";P1,I1,R1
1250 GOSUB 2760:I1= I1/ 100
1260 N1= LOG (R1/ (R1- P1* I1))/ LOG (1+ I1)
1270 N1= INT (N1+ .499)
1280 GOSUB 2770
1290 PRINT "NUMBER OF PERIODS : N = ";
1300 PRINT N1
1310 GOTO 920
1320 IF S= 4THEN GOSUB 2760
1330 P2= INT (N1+ .00001)- (N1+ .00001)
1340 IF ABS (P2)> .00001THEN 1360
1350 GOTO 1370
1360 N1= INT (N1)
1370 P2= 1
1380 ON S- 3GOTO 1550,1390
1390 P2= 0
1400 XX= 0
1410 PRINT
1420 L= 19:PLOT 3,0,17
1430 PRINT "PERIOD   PRINCIPAL   INTEREST   PRINC BAL   INT TO DATE"
1440 PLOT 3,24,23:PRINT "---------------"
1450 PLOT 3,0,19,23
1460 PRINT TAB( 4);"0";
1470 P1$= STR$ (P1):V= LEN (P1$)
1480 FOR U= 1TO V
1490 IF MID$ (P1$,U,1)= "."THEN 1520
1500 NEXT U
1510 P1$= P1$+ ".00":GOTO 1540
1520 IF V- U= 0THEN P1$= P1$+ "00"
1530 IF V- U= 1THEN P1$= P1$+ "0"
1540 PLOT 22:V= LEN (P1$):PRINT TAB( 41- V);P1$
1550 X= 0
1560 X9= P1
1570 Y= 0
1580 FOR S1= 1TO N1- 1
1590 B= X9* I1:B= INT (B* 1000+ 5)/ 10:B= INT (B):B= B/ 100
1600 A2= INT (INT (R1* 100+ .5)- INT (B* 100+ .5))
1610 A2= A2/ 100
1620 GOSUB 2680
1630 Y= Y+ B
1640 IF P2< > 0THEN 1720
1650 GOSUB 260:PLOT 23
1660 PRINT TAB( FN I(S1));S1;:PLOT 18
1670 PRINT TAB( FN J(A2));INT (A2);".";RIGHT$ (STR$ (INT (FN C(A2)* 100+ 1000.5)),2);:PLOT 17
1680 PRINT TAB( FN K(B));INT (B);".";RIGHT$ (STR$ (INT (FN C(B)* 100+ 1000.5)),2);:PLOT 22
1690 PRINT TAB( FN L(X9));INT (X9);".";RIGHT$ (STR$ (INT (FN C(X9)* 100+ 1000.5)),2);:PLOT 21
1700 PRINT TAB( FN M(Y));INT (Y);".";RIGHT$ (STR$ (INT (FN C(Y)* 100+ 1000.5)),2):PLOT 18
1710 IF XX= 1THEN 920
1720 NEXT S1
1730 S1= N1
1740 B= FN A(X9* I1)
1750 A2= R1- B
1760 GOSUB 2680
1770 IF X9< > 0AND ABS (X9)< ABS (R1)THEN A2= A2+ X9:X9= 0
1780 Y= Y+ B
1790 IF P2= 0THEN 1840
1800 GOSUB 2770
1810 PRINT "TOTAL INTEREST PAID : ";
1820 PRINT "$"INT (Y);".";RIGHT$ (STR$ (INT (FN C(Y)* 100+ 1000.5)),2):PLOT 18
1830 GOTO 920
1840 XX= 1:GOTO 1650
1850 PRINT "WHAT ARE N(INTEGER),I(PCT),R($) ";
1860 INPUT "?";N1,I1,R1
1870 GOSUB 2760:I1= I1/ 100
1880 P1= R1* ((1+ I1)^ N1- 1)/ (I1* (1+ I1)^ N1)
1890 GOSUB 2770
1900 PRINT "ORIGINAL PRINCIPAL AMOUNT : ";
1910 PRINT "$"INT (P1);".";RIGHT$ (STR$ (INT (FN C(P1)* 100+ 1000.5)),2)
1920 PLOT 18
1930 GOTO 920
1940 PRINT "WHAT ARE N(INTEGER),P($),R($) ";
1950 INPUT "?";N1,P1,R1
1960 GOSUB 2760
1970 IF N1* R1< = P1THEN 2380
1980 I1= .1
1990 I2= 0
2000 I3= 1
2010 IF A< > 1THEN 2040
2020 P3= R1* ((1+ I1)^ N1- 1)/ I1
2030 GOTO 2050
2040 P3= R1* ((1+ I1)^ N1- 1)/ (I1* (1+ I1)^ N1)
2050 P4= ABS (P1- P3)
2060 IF P4> .001THEN 2110
2070 GOSUB 2770
2080 PRINT "INTEREST PER PERIOD (PCT) : I = ";
2090 PRINT 100* I1;"%"
2100 GOTO 920
2110 IF P4/ P1> .3THEN 2220
2120 IF A= 1THEN 2150
2130 IF P3< P1THEN 2190
2140 GOTO 2160
2150 IF P3> P1THEN 2190
2160 I2= I1
2170 I1= (I1+ I3)/ 2
2180 GOTO 2010
2190 I3= I1
2200 I1= (I1+ I2)/ 2
2210 GOTO 2010
2220 IF A= 1THEN 2250
2230 IF P3< P1THEN 2270
2240 GOTO 2160
2250 IF P3> P1THEN 2270
2260 GOTO 2160
2270 I3= I1
2280 I1= (I1+ I2)/ 4
2290 GOTO 2010
2300 PRINT "WHAT ARE N(INTEGER),P($),I(PCT) ";
2310 INPUT "?";N1,P1,I1
2320 GOSUB 2760:I1= I1/ 100
2330 R1= P1* I1* (1+ I1)^ N1/ ((1+ I1)^ N1- 1)
2340 GOSUB 2770
2350 PRINT "WITHDRAWAL EACH PERIOD : R = ";
2360 PRINT "$"INT (R1);".";RIGHT$ (STR$ (INT (FN C(R1)* 100+ 1000.5)),2);""
2370 GOTO 920
2380 PLOT 3,0,17,11,3,0,18:PRINT "THE PRINCIPAL [P] IS NOT RECOVERED; [I] MUST BE POSITIVE."
2390 GOSUB 2460
2400 PLOT 3,0,15,11
2410 GOTO 1940
2420 PLOT 3,0,17,11,3,0,18:PRINT "AMOUNT PAID IN [N*R] NOT RECOVERED; [I] MUST BE POSITIVE."
2430 GOSUB 2460
2440 PLOT 3,0,15,11
2450 GOTO 780
2460 FOR I= 1TO 200:PLOT 3,64,30:NEXT :PLOT 3,0,18,11,3,0,16,11:RETURN
2470 PLOT 27,11:LOAD "MENU;1":RUN
2480 PRINT
2490 PRINT "DEFINITION OF VARIABLES:"
2500 PRINT "   N = NUMBER OF PERIODS"
2510 PRINT "   A = AMOUNT AT END OF N PERIODS"
2520 PRINT "   I = INTEREST/PERIOD (%)"
2530 PRINT "   R = PAYMENT AMOUNT/PERIOD"
2540 PRINT "   P = ORIGINAL PRINCIPAL"
2550 FOR Q= 1TO 62:PRINT "-";:NEXT :PRINT "-"
2560 GOTO 340
2570 END
2580 T= 14:ON SGOTO 2590,2620,2620,2600,2600
2590 PLOT 3,0,15,11
2600 T= 16:GOTO 2620
2610 PLOT 3,0,13,11
2620 FOR Q= TTO 30STEP 2
2630 PLOT 14,3,0,Q,11
2640 NEXT Q
2650 PLOT 15,3,0,15
2660 IF S> 6THEN 930
2670 GOTO 1030
2680 VA= INT (X9)
2690 VB= INT ((X9- VA)* 100+ .5)/ 100
2700 UA= INT (A2)
2710 UB= INT ((A2- UA)* 100+ .5)/ 100
2720 WA= INT (VA- UA)
2730 WB= INT (VB* 100- UB* 100+ .5)/ 100
2740 X9= WA+ WB
2750 RETURN
2760 PLOT 3,26,17:PRINT "CALCULATING":PLOT 3,64,0:RETURN
2770 PLOT 3,0,17,11:RETURN