Compucolor.org – Virtual Media

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

8025 CLEAR 100:PLOT 12
8030 GOTO 9025
8040 L= L+ 1:IF L= 23THEN ZZ= CALL (0):L= 22
8050 GOSUB 8060:PRINT SPC( 63)""
8060 PLOT 3,0,L:RETURN
9025 PLOT  3,24,0,14
9030 PRINT "*  ANNUITY  *"
9040 S= 0
9060 PRINT "THIS PROGRAM COMPUTES PAYMENT AND WITHDRAWAL ANNUITIES."
9070 GOTO  11010
9090 PLOT 3,0,13:PRINT "WHICH ANNUITY TYPE (1=PAYMENT, 2=WITHDRAWAL) ";
9100 DEF  FN A(U)= .01* INT (100* U+ .5)
9102 DEF  FN C(X)= INT (X* 100- INT (X)* 100+ .5)/ 100
9103 DEF  FN I(S)= 5- LEN (STR$ (S))
9104 DEF  FN J(A2)= 14- LEN (STR$ (INT (A2)))
9105 DEF  FN K(B)= 25- LEN (STR$ (INT (B)))
9106 DEF  FN L(X9)= 38- LEN (STR$ (INT (X9)))
9107 DEF  FN M(Y)= 50- LEN (STR$ (INT (Y)))
9110 INPUT "?";A:REM 
9120 GOTO  9170
9130 A= 3- A
9140 PLOT 3,46,13:PRINT A
9170 ON AGOTO 9220,9810
9190 PLOT 17,3,0,13,11,3,0,13
9200 PRINT "   ANSWER 1 OR 2 PLEASE.":GOTO 9206
9205 FOR I= 1TO 100:PLOT 3,64,0:NEXT :RETURN
9206 GOSUB 9205
9207 PLOT 18,3,0,13,11,3,0,13
9210 GOTO 9090
9220 IF  S=  1 THEN  9260
9240 PLOT 3,0,14:PRINT "WHICH VARIABLE IS UNKNOWN (1=N,2=A,3=I,4=R) ";
9250 INPUT "?";D
9260 ON DGOTO 9340,9430,9510,9570
9305 PLOT 3,0,14,11,3,0,14:GOSUB 9310:GOTO 9315
9310 PRINT "   ANSWER 1,2,3,OR 4 PLEASE.":GOSUB 9205:RETURN
9315 PLOT 3,0,14,11,3,0,14
9320 GOTO 9240
9340 PRINT "WHAT ARE A($),I(PCT),R($) ";
9345 INPUT "?";A1,I1,R1
9350 GOSUB 12600
9360 I1= I1/ 100
9370 N1= LOG ((A1* I1/ R1)+ 1)/ LOG (1+ I1)
9390 GOSUB 12610
9400 PRINT "NUMBER OF PERIODS = N = ";
9405 PRINT N1
9410 GOTO  9640
9430 PRINT "WHAT ARE N(INTEGER),I(PCT),R($) ";
9440 INPUT "?";N1,I1,R1
9445 GOSUB 12600
9450 I1= I1/ 100
9460 A1= R1* ((1+ I1)^ N1- 1)/ I1
9470 GOSUB 12610
9480 PRINT "AMOUNT AT END OF N PERIODS = A = ";
9485 PRINT "$"INT (A1);".";RIGHT$ (STR$ (INT (FN C(A1)* 100+ 1000.5)),2)
9490 GOTO  9640
9510 PRINT "WHAT ARE N(INTEGER),A($),R($) ";
9520 INPUT "?";N1,P1,R1
9530 PRINT
9540 IF  N1* R1> P1 THEN  10980
9545 GOSUB 12600
9550 GOTO 10580
9570 PRINT "WHAT ARE N(INTEGER),A($),I(PCT) ";
9580 INPUT "?";N1,A1,I1
9585 GOSUB 12600
9590 I1= I1/ 100
9600 R1= A1* I1/ ((1+ I1)^ N1- 1)
9610 GOSUB 12610
9620 PRINT "PAYMENT EACH PERIOD = R = ";
9630 PRINT "$"INT (R1);".";RIGHT$ (STR$ (INT (FN C(R1)* 100+ 1000.5)),2)
9640 PLOT 3,24,23:PRINT "---------------"
9670 PRINT "ANOTHER CASE ? ENTER ONE OF THE FOLLOWING :"
9675 PRINT "   1) '1' FOR ANOTHER CASE, SAME TYPE ;"
9680 PRINT "   2) '2' FOR ANOTHER CASE, DIFFERENT UNKNOWN ;"
9685 PRINT "   3) '3' FOR ANOTHER CASE, OTHER TYPE OF ANNUITY ;"
9690 PRINT "   4) '4' TO GET TOTAL INTEREST PAID OVER THE N PERIODS ;"
9695 PRINT "   5) '5' FOR A TABLE OF WITHDRAWALS, PRINCIPAL, AND INTEREST ;"
9700 PRINT "OR 6) '6' TO TERMINATE ";
9720 INPUT  S
9725 IF S< > 6THEN 11500
9727 GOTO 11000
9730 IF S= 1OR S= 2THEN 9170
9740 IF S= 3THEN 9130
9770 IF  A < >  1 THEN  9810
9780 PRINT
9790 PRINT "ALTERNATIVE NOT APPLICABLE TO PAYMENT ANNUITIES."
9800 GOTO  9640
9810 ON SGOTO 9870,9840,9840,10020,10020
9840 PLOT 3,0,14
9850 PRINT "WHICH VARIABLE IS UNKNOWN (1=N,2=P,3=I,4=R) ";
9860 INPUT "?";A1
9870 ON A1GOTO 9950,10450,10530,10890
9915 PLOT 3,0,14,11,3,0,14
9920 GOSUB 9310
9925 PLOT 3,0,14,11,3,0,14:REM 
9930 GOTO 9850
9950 PRINT "WHAT ARE P($),I(PCT),R($) ";
9960 INPUT "?";P1,I1,R1
9970 GOSUB 12600:I1= I1/ 100
9980 N1= LOG (R1/ (R1- P1* I1))/ LOG (1+ I1)
9985 N1= INT (N1+ .499)
9990 GOSUB 12610
10000 PRINT "NUMBER OF PERIODS = N = ";
10005 PRINT N1
10010 GOTO  9640
10020 E= 0:IF S= 4THEN GOSUB 12600
10030 P2= INT (N1+ .00001)- (N1+ .00001)
10040 IF  ABS (P2) >  .00001 THEN  10070
10050 E= 1
10060 GOTO  10080
10070 N1= INT (N1)
10080 P2= 1
10090 ON S- 3GOTO 10160,10110
10110 P2= 0
10115 XX= 0
10120 PRINT
10125 L= 19:PLOT 3,0,17
10130 PRINT "PERIOD   PRINCIPAL   INTEREST   PRINC BAL   INT TO DATE"
10135 PLOT 3,24,23:PRINT "---------------"
10140 PLOT 3,0,19,23
10150 PRINT TAB( 4);"0";
10151 P1$= STR$ (P1):V= LEN (P1$)
10152 FOR  U= 1TO V
10153 IF  MID$ (P1$,U,1) =  "." THEN  10156
10154 NEXT  U
10155 P1$= P1$+ ".00" : GOTO  10158
10156 IF  V- U =  0 THEN  P1$= P1$+ "00"
10157 IF  V- U =  1 THEN  P1$= P1$+ "0"
10158 PLOT 22:V= LEN (P1$):PRINT TAB( 41- V);P1$
10160 X= 0
10170 X9= P1
10180 Y= 0
10190 FOR S= 1TO N1- E
10200 B= X9* I1:B= INT (B* 1000+ 5)/ 10:B= INT (B):B= B/ 100
10210 A2= INT (INT (R1* 100+ .5)- INT (B* 100+ .5))
10215 A2= A2/ 100
10220 GOSUB 12510
10230 Y= Y+ B
10270 IF  P2 < >  0 THEN  10290
10271 GOSUB 8040:PLOT 23
10272 PRINT TAB( FN I(S));S;:PLOT 18
10274 PRINT TAB( FN J(A2));INT (A2);".";RIGHT$ (STR$ (INT (FN C(A2)* 100+ 1000.5)),2);:PLOT 17
10276 PRINT TAB( FN K(B));INT (B);".";RIGHT$ (STR$ (INT (FN C(B)* 100+ 1000.5)),2);:PLOT 22
10278 PRINT TAB( FN L(X9));INT (X9);".";RIGHT$ (STR$ (INT (FN C(X9)* 100+ 1000.5)),2);:PLOT 21
10280 PRINT TAB( FN M(Y));INT (Y);".";RIGHT$ (STR$ (INT (FN C(Y)* 100+ 1000.5)),2):PLOT 18
10285 IF  XX= 1 THEN  9640
10290 NEXT  S
10300 S= N1
10310 B= FN A(X9* I1)
10320 A2= R1- B
10330 GOSUB 12510
10335 IF X9< > 0AND ABS (X9)< ABS (R1)THEN A2= A2+ X9:X9= 0
10340 Y= Y+ B
10380 IF   P2= 0 THEN  10420
10390 GOSUB 12610
10400 PRINT "TOTAL INTEREST PAID = ";
10405 PRINT "$"INT (Y);".";RIGHT$ (STR$ (INT (FN C(Y)* 100+ 1000.5)),2):PLOT 18
10410 GOTO  9640
10420 XX= 1:GOTO 10271
10450 PRINT "WHAT ARE N(INTEGER),I(PCT),R($) ";
10460 INPUT "?";N1,I1,R1
10470 GOSUB 12600:I1= I1/ 100
10480 P1= R1* ((1+ I1)^ N1- 1)/ (I1* (1+ I1)^ N1)
10490 GOSUB 12610
10500 PRINT "ORIGINAL PRINCIPAL AMOUNT IS ";
10505 PRINT "$"INT (P1);".";RIGHT$ (STR$ (INT (FN C(P1)* 100+ 1000.5)),2)
10507 PLOT 18
10510 GOTO  9640
10530 PRINT "WHAT ARE N(INTEGER),P($),R($) ";
10540 INPUT "?";N1,P1,R1
10550 GOSUB 12600
10560 IF  N1* R1 < =  P1 THEN  10960
10580 I1= .1
10590 I2= 0
10600 I3= 1
10610 IF  A < >  1 THEN  10640
10620 P3= R1* ((1+ I1)^ N1- 1)/ I1
10630 GOTO  10650
10640 P3= R1* ((1+ I1)^ N1- 1)/ (I1* (1+ I1)^ N1)
10650 P4= ABS (P1- P3)
10660 IF  P4 >  .001 THEN  10690
10665 GOSUB 12610
10670 PRINT "INTEREST PER PERIOD (PCT) = I = ";
10675 PRINT 100* I1;"%"
10680 GOTO  9640
10690 IF  P4/ P1 >  .3 THEN  10800
10700 IF   A= 1 THEN  10730
10710 IF  P3< P1 THEN  10770
10720 GOTO  10740
10730 IF  P3> P1 THEN  10770
10740 I2= I1
10750 I1= (I1+ I3)/ 2
10760 GOTO  10610
10770 I3= I1
10780 I1= (I1+ I2)/ 2
10790 GOTO  10610
10800 IF  A= 1 THEN  10830
10810 IF  P3 <  P1 THEN  10850
10820 GOTO   10740
10830 IF  P3> P1 THEN  10850
10840 GOTO  10740
10850 I3= I1
10860 I1= (I1+ I2)/ 4
10870 GOTO  10610
10890 PRINT "WHAT ARE N(INTEGER),P($),I(PCT) ";
10900 INPUT "?";N1,P1,I1
10910 GOSUB 12600:I1= I1/ 100
10920 R1= P1* I1* (1+ I1)^ N1/ ((1+ I1)^ N1- 1)
10930 GOSUB 12610
10940 PRINT "WITHDRAWAL EACH PERIOD = R = ";
10945 PRINT "$"INT (R1);".";RIGHT$ (STR$ (INT (FN C(R1)* 100+ 1000.5)),2);""
10950 GOTO  9640
10960 PLOT 3,0,18:PRINT "THE PRINCIPAL [P] IS NOT RECOVERED; [I] MUST BE POSITIVE."
10965 GOSUB 10995
10970 GOTO 10530
10980 PLOT 3,0,18:PRINT "AMOUNT PAID IN [N*R] NOT RECOVERED; [I] MUST BE POSITIVE."
10985 GOSUB 10995
10990 GOTO 9510
10995 FOR I= 1TO 100:PLOT 3,64,30:NEXT :PLOT 3,0,18,11,3,0,16,11:RETURN
11000 PLOT 27,11:LOAD "MENU;1":RUN
11010 PRINT
11020 PRINT "DEFINITION OF VARIABLES:"
11030 PRINT "   --N = NUMBER OF PERIODS"
11040 PRINT "   --A = AMOUNT LEFT AT END OF N PERIODS"
11050 PRINT "   --I = INTEREST IN PERCENT PER PERIOD"
11060 PRINT "   --R = AMOUNT OF PAYMENT PER PERIOD"
11070 PRINT "   --P = ORIGINAL PRINCIPAL AMOUNT"
11090 FOR Q= 1TO 62:PRINT "-";:NEXT :PRINT "-"
11100 GOTO 9090
11200 END
11500 T= 14:ON SGOTO 11503,11510,11510,11504,11504
11503 PLOT 3,0,15,11
11504 T= 16:GOTO 11510
11505 PLOT 3,0,13,11
11510 FOR Q= TTO 30STEP 2
11520 PLOT  14,3,0,Q,11
11530 NEXT  Q
11540 PLOT 15,3,0,15
11550 IF S> 6THEN 9660
11560 GOTO 9730
12205 IF P2< > 0THEN RETURN
12510 VA= INT (X9)
12520 VB= INT ((X9- VA)* 100+ .5)/ 100
12530 UA= INT (A2)
12540 UB= INT ((A2- UA)* 100+ .5)/ 100
12550 WA= INT (VA- UA)
12560 WB= INT (VB* 100- UB* 100+ .5)/ 100
12570 X9= WA+ WB
12580 RETURN
12600 PLOT 3,26,17:PRINT "CALCULATING":PLOT 3,64,0:RETURN
12610 PLOT 3,0,17,11:RETURN