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