10  DATA 350000.,24500,35000.,12,50
20  DATA 2,0,184320.,0
30  DATA 1,1,12,35000.
40  DATA 2,0,99648.,0
50  DATA 1,2,5,25000,10,25000
60  DATA 4,0,12
994  REM     ********************************
995  REM     *****     HOUSEKEEPING     *****
996  REM     ********************************
1000  DIM A[50],B[50],C[50],D[50],E[50]
1010  DIM F[50],G[50],H[50],X[50],Y[50]
1015  DIM U[50]
1020  DIM Q$[3]
1030  MAT A=ZER
1040  MAT B=ZER
1050  MAT C=ZER
1060  MAT D=ZER
1070  MAT E=ZER
1080  MAT F=ZER
1090  MAT G=ZER
1100  MAT H=ZER
1110  MAT X=ZER
1120  MAT Y=ZER
1500  PRINT "     CAPITAL INVESTMENT ANALYSIS"
1502  PRINT 
1504  PRINT "ENTER TIME PERIOD TO BE USED FOR CASH FLOWS AND LIFE:"
1505  PRINT " (1)ANNUAL, (2)SEMI-ANNUAL, (3)QUARTERLY, (4)MONTHLY";
1506  INPUT K
1508  K=(K=1)+2*(K=2)+4*(K=3)+12*(K=4)
1510  PRINT 
1520  PRINT "IS INPUT FROM (1)DATA STATEMENTS OR (2)CONVERSATIONALLY";
1540  INPUT Q2
1550  GOTO Q2 OF 3000,2000
1560  PRINT "ERROR IN INPUT, RE-ENTER";
1570  GOTO 1540
1994  REM     ****************************************
1995  REM     *****     CONVERSATIONAL INPUT     *****
1996  REM     ****************************************
2000  PRINT 
2002  PRINT "INVESTMENT AMOUNT";
2010  INPUT I1
2020  PRINT "INVESTMENT TAX CREDIT AMOUNT";
2030  INPUT C1
2040  PRINT "SALVAGE VALUE";
2050  INPUT S1
2060  PRINT "LIFE OF INVESTMENT";
2070  INPUT L1
2080  PRINT "INCOME TAX RATE";
2090  INPUT T1
2095  PRINT 
2100  GOSUB 7100
2110  GOSUB 7300
2120  PRINT 
2130  PRINT "ANY EXTRAORDINARY EARNINGS";
2140  GOSUB 7000
2150  IF A=0 THEN 2154
2152  GOSUB 7500
2153  PRINT 
2154  PRINT "ANY NORMAL EXPENSES";
2156  GOSUB 7000
2158  IF A=1 THEN 2170
2160  X1=0
2162  GOTO 2200
2170  GOSUB 7600
2180  GOSUB 7800
2190  PRINT 
2200  PRINT "ANY EXTRAORDINARY EXPENSES";
2210  GOSUB 7000
2220  IF A=0 THEN 2240
2230  GOSUB 8000
2240  GOSUB 8100
2250  GOSUB 8300
2260  GOTO 4000
2994  REM     ****************************************
2995  REM     *****     READ DATA STATEMENTS     *****
2996  REM     ****************************************
3000  READ I1,C1,S1,L1,T1
3010  READ E1
3020  IF E1=1 THEN 3050
3030  READ E2,E3,E4
3040  GOTO 3080
3050  FOR I=1 TO L1
3060  READ E[I]
3070  NEXT I
3080  READ E5
3090  IF E5=0 THEN 3150
3100  READ E6
3110  FOR I=1 TO E6
3120  READ E7,E8
3130  A[E7]=E8
3140  NEXT I
3150  READ X1
3160  IF X1=1 THEN 3190
3170  READ X2,X3,X4
3180  GOTO 3220
3190  FOR I=1 TO L1
3200  READ X[I]
3210  NEXT I
3220  READ X5
3230  IF X5=0 THEN 3290
3240  READ X6
3250  FOR I=1 TO X6
3260  READ X7,X8
3270  Y[X7]=X8
3280  NEXT I
3290  READ D1
3300  IF D1=1 THEN 3330
3310  READ D2,D3
3320  GOTO 4000
3330  FOR I=1 TO L1
3340  READ D[I]
3350  NEXT I
3994  REM     *******************************
3995  REM     *****     CALCULATIONS     *****
3996  REM     *******************************
4000  GOTO E1 OF 4180,4010,4050,4100,4144
4010  FOR I=1 TO L1
4020  E[I]=E3
4030  NEXT I
4040  GOTO 4180
4050  E9=INT((E3-(E4*.01*E3))/(E2-1))
4060  FOR I=1 TO E2
4070  E[I]=E3-(I-1)*E9
4080  NEXT I
4090  GOTO 4180
4100  E4=E4*.01
4104  E0=E3*E4
4108  E[1]=E3
4112  FOR N=2 TO E2
4116  E[N]=E[N-1]-(((2*(E2-N+1)*(E3-E0)))/(E2*(E2-1)))
4120  NEXT N
4140  GOTO 4180
4144  E4=E4*.01
4146  E0=E3*E4
4148  E[1]=E3
4152  FOR N=2 TO E2
4156  E[N]=E[N-1]-(((2*(N-1)*(E3-E0)))/(E2*(E2-1)))
4159  NEXT N
4180  GOTO X1 OF 4360,4190,4230,4280,4340
4182  IF X1=0 THEN 4360
4184  PRINT "ERROR LINE 2184"
4190  FOR I=1 TO L1
4200  X[I]=X3
4210  NEXT I
4220  GOTO 4360
4230  X9=INT((X3-(X4*.01*X3))/(X2-1))
4240  FOR I=1 TO X2
4250  X[I]=X3-(I-1)*X9
4260  NEXT I
4270  GOTO 4360
4280  X4=X4*.01
4283  X0=X3*X4
4286  X[1]=X3
4289  FOR N=2 TO X2
4291  X[N]=X[N-1]-(((2*(X2-N+1)*(X3-X0)))/(X2*(X2-1)))
4294  NEXT N
4300  GOTO 4360
4340  X4=X4*.01
4343  X0=X3*X4
4346  X[1]=X3
4349  FOR N=2 TO X2
4352  X[N]=X[N-1]-(((2*(N-1)*(X3-X0)))/(X2*(X2-1)))
4355  NEXT N
4360  GOTO D1 OF 4520,4370,4420,4490
4370  D[1]=(1-(D2*.01))*(I1-S1)/D3
4380  FOR N=2 TO D3
4390  D[N]=D[1]
4400  NEXT N
4410  GOTO 4520
4420  D4=I1-S1
4430  D5=(1-(D2*.01))*D4
4440  FOR N=1 TO D3
4450  D[N]=D5*2/D3
4460  D5=D5-D[N]
4470  NEXT N
4480  GOTO 4520
4490  FOR N=1 TO D3
4500  D[N]=(2/(D3*(D3+1)))*(D3+1-N)*(1-(D2*.01))*(I1-S1)
4510  NEXT N
4520  FOR I=1 TO L1
4530  B[I]=E[I]+A[I]-X[I]-Y[I]
4540  C[I]=B[I]-D[I]
4550  F[I]=C[I]*(1-(T1*.01))
4560  G[I]=C[I]-F[I]+D[I]
4570  NEXT I
4580  U9=L1+1
4590  U[1]=-(I1-C1)
4600  FOR I=2 TO L1+1
4610  U[I]=G[I-1]
4620  NEXT I
4630  GOSUB 9000
4640  R=U
4650  FOR I=1 TO L1
4660  H[I]=G[I]/(1+(R/100))^I
4670  NEXT I
4680  R=((1+(R/100))^K-1)*100
4690  GOTO 5000
4994  REM     *********************************
4995  REM     *****     OUTPUT REPORT     *****
4996  REM     *********************************
5000  PRINT LIN(3)
5001  PRINT  USING 5002;R
5002  IMAGE "RETURN ON INVESTMENT IS ",X,DDD.DDDD,X,"PERCENT (ANNUAL)"
5003  PRINT LIN(2)
5004  PRINT "DO YOU WISH A COMPLETE REPORT";
5005  GOSUB 7000
5006  IF A=0 THEN 5950
5007  PRINT LIN(5)
5008  PRINT TAB(23),"CAPITAL INVESTMENT ANALYSIS"
5010  PRINT 
5020  PRINT  USING 5030;I1,S1
5030  IMAGE 2X,"INVESTMENT COST",8X,8D,7X,"SALVAGE VALUE",4X,7D
5040  PRINT  USING 5050;C1
5050  IMAGE #,2X,"INVESTMENT TAX CREDIT",4X,6D,7X
5060  PRINT  USING 5070;L1
5070  IMAGE "LIFE OF INVESTMENT",4X,2D,3X,"YEARS"
5080  PRINT  USING 5090;I1-C1
5090  IMAGE #,2X,"NET INVESTMENT COST",4X,8D,7X
5100  PRINT  USING 5110;T1
5110  IMAGE "INCOME TAX RATE",4X,DD.DD,X,"PERCENT"
5120  PRINT LIN(3)
5130  PRINT  USING 5140
5140  IMAGE #,12X,"NORMAL",7X,"EXTRA",8X,"NORMAL"
5150  PRINT  USING 5160
5160  IMAGE 7X,"EXTRA",6X,"BEFORE TAX"
5170  PRINT  USING 5180
5180  IMAGE #,"PERIOD",5X,"EARNINGS",5X,"EARNINGS"
5190  PRINT  USING 5200
5200  IMAGE 5X,"EXPENSES",5X,"EXPENSES",5X,"CASH FLOW"
5210  PRINT LIN(2)
5220  FOR I=1 TO L1
5230  PRINT  USING 5250;I,E[I],A[I],X[I],Y[I],B[I]
5240  NEXT I
5250  IMAGE X,3D,2X,5(5X,8D)
5260  PRINT LIN(3)
5270  PRINT  USING 5272
5272  IMAGE #,24X,"TAXABLE",7X,"INCOME"
5276  PRINT  USING 5278
5278  IMAGE 5X,"AFTER TAX",3X,"DISCOUNTED"
5280  PRINT  USING 5282
5282  IMAGE #,"PERIOD",3X,"DEPRECIATION",4X,"INCOME"
5284  PRINT  USING 5286
5286  IMAGE 8X,"TAX",7X,"CASH FLOW",4X,"CASH FLOW"
5290  PRINT LIN(2)
5300  T2=0
5310  FOR I=1 TO L1
5320  PRINT  USING 5250;I,D[I],C[I],F[I],G[I],H[I]
5330  T2=T2+H[I]
5350  NEXT I
5360  PRINT LIN(2)
5370  PRINT  USING 5380;T2
5380  IMAGE "TOTAL DISCOUNTED CASH FLOW",7X,8D
5390  PRINT  USING 5400;I1-C1
5400  IMAGE "INITIAL INVESTMENT",15X,8D
5410  PRINT  USING 5420;T2-(I1-C1)
5420  IMAGE "NET PRESENT VALUE OF INVESTMENT",9X,"0"
5455  PRINT LIN(5)
5950  PRINT  USING 5952
5952  IMAGE #,"DO YOU WISH TO (1)QUIT, (2)ENTER NEW SET OF DATA, OR "
5955  PRINT  USING 5957
5957  IMAGE "(3)CHANGE CURRENT DATA"
5960  INPUT Q2
5970  GOTO Q2 OF 9999,2000,6000
5980  PRINT "ERROR IN INPUT, RE-ENTER"
5990  GOTO 5960
5994  REM     *******************************
5995  REM     *****     CHANGE DATA     *****
5996  REM     *******************************
6000  PRINT "CHANGE OPTIONS:"
6010  PRINT "   1-BASIC DATA"
6020  PRINT "   2-EARNINGS DATA"
6030  PRINT "   3-EXPENSE DATA"
6040  PRINT "   4-DEPRECIATION DATA"
6050  PRINT "   5-EXIT"
6060  PRINT "WHICH CHANGE OPTION";
6070  INPUT Q2
6080  GOTO Q2 OF 6110,6410,6520,6640,5950
6090  PRINT "ERROR IN INPUT, RE-ENTER";
6100  GOTO 6070
6110  PRINT "BASIC DATA OPTIONS:"
6120  PRINT "   1-INVESTMENT AMOUNT"
6130  PRINT "   2-INVESTMENT TAX CREDIT"
6140  PRINT "   3-SALVAGE VALUE"
6150  PRINT "   4-LIFE OF INVESTMENT"
6160  PRINT "   5-INCOME TAX RATE"
6170  PRINT "   6-EXIT"
6180  PRINT "WHICH BASIC DATA OPTION";
6190  INPUT Q2
6200  GOTO Q2 OF 6230,6260,6290,6320,6350,6400
6210  PRINT "ERROR IN INPUT, RE-ENTER";
6220  GOTO 6190
6230  PRINT "ENTER INVESTMENT AMOUNT";
6240  INPUT I1
6250  GOTO 6370
6260  PRINT "ENTER INVESTMENT TAX CREDIT";
6270  INPUT C1
6280  GOTO 6370
6290  PRINT "ENTER SALVAGE VALUE";
6300  INPUT S1
6310  GOTO 6370
6320  PRINT "ENTER LIFE OF INVESTMENT";
6330  INPUT L1
6340  GOTO 6370
6350  PRINT "ENTER INCOME TAX RATE";
6360  INPUT T1
6370  PRINT "CHANGE MORE BASIC DATA";
6380  GOSUB 7000
6390  IF A=1 THEN 6180
6400  GOTO 6700
6410  PRINT "CHANGE EARNINGS OPTION";
6420  GOSUB 7000
6430  IF A=0 THEN 6450
6440  GOSUB 7100
6450  GOSUB 7300
6460  PRINT 
6470  PRINT "CHANGE EXTRAORDINARY EARNINGS";
6480  GOSUB 7000
6490  IF A=0 THEN 6710
6500  GOSUB 7500
6510  GOTO 6710
6520  PRINT 
6530  PRINT "CHANGE EXPENSE OPTIONS";
6540  GOSUB 7000
6550  IF A=0 THEN 6570
6560  GOSUB 7600
6570  GOSUB 7800
6580  PRINT 
6590  PRINT "CHANGE EXTRAORDINARY EXPENSES";
6600  GOSUB 7000
6610  IF A=0 THEN 6710
6620  GOSUB 8000
6630  GOTO 6710
6640  PRINT 
6650  PRINT "CHANGE DEPRECIATION OPTION";
6660  GOSUB 7000
6670  IF A=0 THEN 6690
6680  GOSUB 8100
6690  GOSUB 8300
6700  PRINT 
6710  PRINT "ANY MORE CHANGES";
6720  GOSUB 7000
6730  IF A=0 THEN 4000
6740  GOTO 6000
6994  REM     *******************************
6995  REM     *****     SUBROUTINES     *****
6996  REM     *******************************
7000  INPUT Q$
7010  IF Q$[1,1]="Y" THEN 7070
7020  IF Q$[1,1]="N" THEN 7050
7030  PRINT "YES OR NO, PLEASE";
7040  GOTO 7000
7050  A=0
7060  GOTO 7080
7070  A=1
7080  RETURN 
7090  REM     ****************************************
7100  PRINT "EARNINGS OPTIONS:"
7110  PRINT "   1-EARNINGS FOR EACH PERIOD ARE ENTERED"
7120  PRINT "   2-UNIFORM EARNINGS"
7130  PRINT "   3-STRAIGHT LINE DECLINE"
7140  PRINT "   4-RAPID DECLINE IN EARLY YEARS"
7150  PRINT "   5-RAPID DECLINE IN LATER YEARS"
7160  PRINT "   6-EXIT"
7170  PRINT 
7180  PRINT "WHICH OPTION";
7190  INPUT E1
7200  IF E1<1 THEN 7230
7210  IF E1>6 THEN 7230
7220  GOTO 7250
7230  PRINT "ERROR IN INPUT, RE-ENTER";
7240  GOTO 7190
7250  RETURN 
7260  REM     ****************************************
7300  GOTO E1 OF 7310,7370,7410,7410,7410,7470
7310  PRINT "FOR EACH PERIOD, ENTER EARNINGS"
7320  FOR I=1 TO L1
7330  PRINT I;
7340  INPUT E[I]
7350  NEXT I
7360  GOTO 7470
7370  PRINT "ENTER SINGLE EARNING AMOUNT";
7380  E2=E4=0
7390  INPUT E3
7400  GOTO 7470
7410  PRINT "ENTER EARNINGS LIFE IN YEARS";
7420  INPUT E2
7430  PRINT "ENTER INITIAL EARNINGS";
7440  INPUT E3
7450  PRINT "ENTER % OF INITIAL VALUE TO BE FINAL";
7460  INPUT E4
7465  E4=E4*.01
7470  RETURN 
7480  REM     ****************************************
7500  PRINT "ENTER THE NUMBER OF EXTRAORDINARY EARNINGS";
7510  INPUT E6
7520  PRINT "FOR EACH EARNING, ENTER PERIOD # AND AMOUNT"
7530  FOR I=1 TO E6
7540  PRINT "EARNING # ";I;
7550  INPUT E7,E8
7560  A[E7]=E8
7570  NEXT I
7580  RETURN 
7590  REM     ****************************************
7600  PRINT "EXPENSE OPTIONS:"
7610  PRINT "   1-EXPENSES FOR EACH PERIOD ARE ENTERED"
7620  PRINT "   2-UNIFORM EXPENSES"
7630  PRINT "   3-STRAIGHT LINE DECLINE"
7640  PRINT "   4-RAPID DECLINE IN EARLY YEARS"
7650  PRINT "   5-RAPID DECLINE IN LATER YEARS"
7660  PRINT "   6-EXIT"
7670  PRINT 
7680  PRINT "WHICH OPTION";
7690  INPUT X1
7700  IF X1>6 THEN 7730
7710  IF X1<1 THEN 7730
7720  GOTO 7750
7730  PRINT "ERROR IN INPUT, RE-ENTER";
7740  GOTO 7690
7750  RETURN 
7760  REM     ****************************************
7800  GOTO X1 OF 7810,7870,7910,7910,7910,7970
7810  PRINT "FOR EACH PERIOD, ENTER EXPENSES"
7820  FOR I=1 TO L1
7830  PRINT I;
7840  INPUT X[I]
7850  NEXT I
7860  GOTO 7970
7870  PRINT "ENTER UNIFORM EXPENSE AMOUNT";
7880  X2=X4=0
7890  INPUT X3
7900  GOTO 7970
7910  PRINT "ENTER EXPENSE LIFE IN YEARS";
7920  INPUT X2
7930  PRINT "INITIAL EXPENSE";
7940  INPUT X3
7950  PRINT "ENTER % OF INITIAL EXPENSE TO BE FINAL VALUE";
7960  INPUT X4
7970  RETURN 
7980  REM     ****************************************
8000  PRINT "ENTER THE NUMBER OF EXTRAORDINARY EXPENSES";
8010  INPUT X6
8020  PRINT "FOR EACH EXPENSE, ENTER PERIOD # AND AMOUNT"
8030  FOR I=1 TO X6
8040  PRINT "EXPENSE # ";I;
8050  INPUT X7,X8
8060  Y[X7]=X8
8070  NEXT I
8080  RETURN 
8090  REM     ****************************************
8100  PRINT 
8110  PRINT "DEPRECIATION OPTIONS;"
8120  PRINT "   1-EACH IS ENTERED"
8130  PRINT "   2-STRAIGHT LINE"
8140  PRINT "   3-DECLINING BALANCE"
8150  PRINT "   4-SUM OF YEARS DIGITS"
8160  PRINT "   5-EXIT"
8170  PRINT 
8180  PRINT "WHICH OPTION";
8190  INPUT D1
8200  IF D1>5 THEN 8230
8210  IF D1<1 THEN 8230
8220  GOTO 8250
8230  PRINT "ERROR IN INPUT, RE-ENTER";
8240  GOTO 8190
8250  RETURN 
8260  REM     ****************************************
8300  IF D1=1 THEN 8370
8310  IF D1=5 THEN 8420
8320  PRINT "ENTER % OF INVESTMENT NOT TO BE DEPRECIATED";
8330  INPUT D2
8340  PRINT "ENTER NUMBER OF YEARS TO DEPRECIATE";
8350  INPUT D3
8360  GOTO 8420
8370  PRINT "FOR EACH PERIOD, ENTER DEPRECIATION"
8380  FOR I=1 TO L1
8390  PRINT I;
8400  INPUT D[I]
8410  NEXT I
8420  RETURN 
9000  REM     *****     DISCOUNTING SUBROUTINE     *****
9010  REM FLOWS IN ARRAY U(N)
9020  REM U9 - NUMBER OF PERIODS
9030  REM U - RETURNED INTEREST
9035  U=0
9040  U1=U2=0
9050  FOR U3=1 TO U9
9060  U4=U[U3]*EXP(-U*(U3-1))
9070  U1=U1+U4
9080  U2=U2+(U3-1)*U4
9090  NEXT U3
9100  U=U+U1/U2
9110  IF ABS(U1/U2)>.00001 THEN 9040
9120  U=100*(EXP(U)-1)
9130  RETURN 
9999  END 
