10 REM TRURATE by BRS 1985. 20 REM Series and rounding added 2000. 30 : 40 DIM L(10,1),G(20,1),H(50,1) 50 DIM C(20,3) 60 : 70 CLS 80 PRINT "CALCULATION OF APR" 90 PRINT "==================" 100 PRINT 110 : 120 S=0:P=0 130 INPUT "How many Advances ";I 140 INPUT "How many Levels ";J 150 INPUT "How many Series ";U 160 INPUT "How many Extras ";K 170 : 180 GOSUB 1000 190 IF J>0 THEN GOSUB 2000 200 IF U>0 THEN GOSUB 7000 210 IF K>0 THEN GOSUB 3000 220 : 230 CLS 240 PRINT "PERIODS:" 250 PRINT 260 INPUT "Periods p.a. ";M 270 : 280 X=1.0001 290 F=0:D=0 300 GOSUB 4000 310 IF J>0 THEN GOSUB 5000 320 IF U>0 THEN GOSUB 8000 330 IF K>0 THEN GOSUB 6000 340 Z=F/D 350 X=X-Z 360 IF ABS(Z)>1E-07 THEN 290 370 : 380 R=100*((1/X)^M-1) 390 CLS 400 PRINT "RESULTS:" 410 PRINT 420 PRINT "TAP = œ";P 430 PRINT "TCC = œ";P-S 440 PRINT "APR = ";(INT(10*R+.5))/10 450 PRINT " (";R;"%)" 460 PRINT 470 PRINT "Another (y/n)? "; 480 K$=INKEY$:IF K$="" THEN 480 490 IF INSTR("YyNn",K$)=0 THEN 480 500 IF INSTR("Yy",K$)<>0 THEN 70 510 PRINT "No":PRINT 520 END 530 : 1000 CLS 1010 PRINT "ADVANCES:" 1020 PRINT 1030 IF I>1 THEN 1090 1040 INPUT "Loan œ ";L(1,0) 1050 L(1,1)=0 1060 S=L(1,0) 1070 RETURN 1080 : 1090 FOR N=1 TO I 1100 PRINT "Advance ";N; 1110 INPUT " œ ";L(N,0) 1120 INPUT "at time ";L(N,1) 1130 S=S+L(N,0) 1140 NEXT 1150 RETURN 1160 : 2000 CLS 2010 PRINT "LEVELS:" 2020 PRINT 2030 FOR N=1 TO J 2040 PRINT "Level ";N; 2050 INPUT " œ ";G(N,0) 2060 INPUT "length ";G(N,1) 2070 P=P+G(N,0)*G(N,1) 2080 NEXT 2090 RETURN 2100 : 3000 CLS 3010 PRINT "EXTRAS:" 3020 PRINT 3030 FOR N=1 TO K 3040 PRINT "Extra ";N; 3050 INPUT " œ ";H(N,0) 3060 INPUT "at time ";H(N,1) 3070 P=P+H(N,0) 3080 NEXT 3090 RETURN 3100 : 4000 FOR N=1 TO I 4010 A=L(N,0):T=L(N,1) 4020 F=F-A*X^T 4030 D=D-T*A*X^(T-1) 4040 NEXT 4050 RETURN 4060 : 5000 B=0 5010 FOR N=1 TO J 5020 A=G(N,0):E=B+G(N,1) 5030 F=F+A*(X^(E+1)-X^(B+1))/(X-1) 5040 Q=E*X^(E+1)-B*X^(B+1) 5050 Q=Q-(E+1)*X^E+(B+1)*X^B 5060 D=D+A*Q/(X-1)^2 5070 B=E 5080 NEXT 5090 RETURN 5100 : 6000 FOR N=1 TO K 6010 A=H(N,0):T=H(N,1) 6020 F=F+A*X^T 6030 D=D+T*A*X^(T-1) 6040 NEXT 6050 RETURN 6060 : 7000 CLS 7010 PRINT "SERIES:" 7020 PRINT 7030 FOR N=1 TO U 7040 PRINT "Series ";N;" œ"; 7050 INPUT " ";C(N,0) 7060 INPUT "start at ";C(N,1) 7070 INPUT "interval ";C(N,2) 7080 INPUT "number ";C(N,3) 7090 P=P+C(N,0)*C(N,3) 7100 NEXT 7110 RETURN 7120 : 8000 FOR N=1 TO U 8010 A=C(N,0):T=C(N,1) 8020 FOR Y=1 TO C(N,3) 8030 F=F+A*X^T 8040 D=D+T*A*X^(T-1) 8050 T=T+C(N,2) 8060 NEXT 8070 NEXT 8080 RETURN