8890  REM ***  HP BASIC PROGRAM LIBRARY  *******************************
8891  REM
8892  REM      CSHFL:  CASH FLOW ANALYSIS
8893  REM
8894  REM      36142  REV B   2/73
8895  REM
8896  REM ***  CONTRIBUTED PROGRAM  ***************************************
9001  REM
9002  REM  CASH FLOW ANALYSIS
9003  PRINT "WHAT IS THE ESTIMATED COST OF CAPITAL IN PERCENT";
9004  INPUT R
9005  LET R=ABS(R/100)
9006  DIM B[121],W[121],X[121],Y[121],Z[121]
9007  PRINT "WHAT IS NUMBER OF PERIODS";
9008  INPUT N
9009  IF N>0 THEN 9012
9010  PRINT "PROGRAM IS DESIGNED FOR AT LEAST ONE PERIOD. TRY AGAIN"
9011  GOTO 9152
9012  IF N<121 THEN 9015
9013  PRINT "PROGRAM DESIGNED FOR LESS THAN 121 PERIODS. TRY AGAIN"
9014  GOTO 9152
9015  PRINT "HOW MANY FLOWS ARE BEING CONSIDERED,1,2,3,OR 4";
9016  INPUT F
9017  PRINT 
9018  IF F>1 THEN 9025
9019  PRINT "ENTER CASH FLOW, MINUS FOR OUTLAYS"
9020  FOR I=0 TO N
9021  PRINT "PERIOD"I;"INCOME";
9022  INPUT W[I+1]
9023  NEXT I
9024  GOTO 9046
9025  IF F>2 THEN 9033
9026  PRINT "ENTER CASH FLOWS,SEPARATE BY COMMA,MINUS FOR OUTLAYS"
9027  PRINT " ","     FLOW 1,FLOW 2"
9028  FOR I=0 TO N
9029  PRINT "PERIOD"I;"INCOME";
9030  INPUT W[I+1],X[I+1]
9031  NEXT I
9032  GOTO 9046
9033  PRINT "ENTER CASH FLOWS, SEPARATE BY COMMAS,MINUS FOR OUTLAYS"
9034  IF F>3 THEN 9041
9035  PRINT " ","     FLOW 1,FLOW 2,FLOW 3"
9036  FOR I=0 TO N
9037  PRINT "PERIOD"I;"INCOME";
9038  INPUT W[I+1],X[I+1],Y[I+1]
9039  NEXT I
9040  GOTO 9046
9041  PRINT " ","     FLOW 1,FLOW 2,FLOW 3,FLOW 4"
9042  FOR I=0 TO N
9043  PRINT "PERIOD"I;"INCOME";
9044  INPUT W[I+1],X[I+1],Y[I+1],Z[I+1]
9045  NEXT I
9046  PRINT 
9047  LET P1=0
9048  LET D=1
9049  LET S=0
9050  LET S1=0
9051  PRINT "FLOW 1"
9052  FOR I=0 TO N
9053  LET S1=S1+W[I+1]
9054  LET B[I+1]=W[I+1]
9055  GOSUB 9149
9056  LET P1=P1+W[I+1]/(R+1)^I
9057  IF S=1 THEN 9062
9058  IF P1<0 THEN 9062
9059  IF I=0 THEN 9061
9060  PRINT "PAYBACK FOR INITIAL INVESTMENT ON FLOW 1 IS IN PERIOD"I
9061  LET S=1
9062  NEXT I
9063  PRINT "PRESENT VALUE OF FLOW 1 IS"P1
9064  IF D>0 THEN 9066
9065  GOSUB 9131
9066  PRINT 
9067  IF F<2 THEN 9152
9068  PRINT "FLOW 2"
9069  LET S1=0
9070  LET S=0
9071  LET P2=0
9072  LET D=1
9073  FOR I=0 TO N
9074  LET S1=S1+X[I+1]
9075  LET B[I+1]=X[I+1]
9076  LET P2=P2+X[I+1]/(R+1)^I
9077  GOSUB 9149
9078  IF S=1 THEN 9083
9079  IF P2<0 THEN 9083
9080  IF I=0 THEN 9082
9081  PRINT "PAYBACK FOR INITIAL INVESTMENT ON FLOW 2 IS IN PERIOD"I
9082  LET S=1
9083  NEXT I
9084  PRINT "PRESENT VALUE OF FLOW 2 IS"P2
9085  IF D>0 THEN 9087
9086  GOSUB 9131
9087  IF F<3 THEN 9152
9088  PRINT 
9089  PRINT "FLOW 3"
9090  PRINT 
9091  LET S1=0
9092  LET S=0
9093  LET P3=0
9094  LET D=1
9095  FOR I=0 TO N
9096  LET S1=S1+Y[I+1]
9097  LET B[I+1]=Y[I+1]
9098  LET P3=P3+Y[I+1]/(R+1)^I
9099  GOSUB 9149
9100  IF S=1 THEN 9105
9101  IF P3<0 THEN 9105
9102  IF I=0 THEN 9104
9103  PRINT "PAYBACK FOR INITIAL INVESTMENT ON FLOW 3 IS IN PERIOD"I
9104  LET S=1
9105  NEXT I
9106  PRINT "PRESENT VALUE OF FLOW 3 IS"P3
9107  IF D>0 THEN 9109
9108  GOSUB 9131
9109  PRINT 
9110  IF F<4 THEN 9152
9111  LET S1=0
9112  LET S=0
9113  LET P4=0
9114  PRINT "FLOW 4"
9115  LET D=1
9116  FOR I=0 TO N
9117  LET S1=S1+Z[I+1]
9118  LET B[I+1]=Z[I+1]
9119  GOSUB 9149
9120  LET P4=P4+Z[I+1]/(R+1)^I
9121  IF S=1 THEN 9126
9122  IF P4<0 THEN 9126
9123  IF I=0 THEN 9125
9124  PRINT "PAYBACK FOR INITIAL INVESTMENT ON FLOW 4 IS IN PERIOD"I
9125  LET S=1
9126  NEXT I
9127  PRINT "PRESENT VALUE OF FLOW 4 IS"P4
9128  IF D>0 THEN 9152
9129  GOSUB 9131
9130  GOTO 9152
9131  LET C=0
9132  LET P=0
9133  LET Q=0
9134  FOR T=0 TO N
9135  LET P=P+B[T+1]*EXP(C*(-T))
9136  LET Q=Q+T*B[T+1]*EXP(C*(-T))
9137  NEXT T
9138  LET C=C+P/Q
9139  IF C >= 0 THEN 9142
9140  PRINT "OUTLAY EXCEEDS INCOME BY"-S1
9141  GOTO 9148
9142  IF (EXP(C)-1)<10 THEN 9145
9143  PRINT "RATE OF RETURN EXCEEDS 1000 PERCENT"
9144  GOTO 9148
9145  IF ABS(P/Q)>.00001 THEN 9132
9146  LET C=EXP(C)-1
9147  PRINT "RATE OF RETURN EQUATING P.V. OF FLOW TO ZERO IS";C*100;"PERCENT"
9148  RETURN 
9149  IF B[I+1] >= 0 THEN 9151
9150  LET D=-1
9151  RETURN 
9152  STOP 
9999  END 
