PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #29)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “FINANCE CALCULATOR”

This excellent set of financial programs has a dual thrust.  Programs
can be run for their various financial purposes or they can be of great
interest to a BASIC programmer interested in analyzing the minutiae of
how to program a specific financial function.

The entire package is fairly straightforward and without bells and
whistles.  Just simple basic programs that get the job done.
File Descriptions:

PVTAX    BAS  Calculate the value of an interest tax deduct.
REGRESS  BAS  Calculate best fit to points - technique 2.
TREASURY BAS  Calculate value of treasury bill.
NETPREST BAS  Calculate net present value of investment.
NUMERIC  BAS  Convert number to new base.
PERT     BAS  Program evaluation and review technique.
BALANCE  BAS  Calculate remaining balance of loan.
BESTLINE BAS  Calculate best fit to points - technique 1.
BUDGET   BAS  Recursive personal budget model.
BOND     BAS  Calculate accrued bond interest.
LEASE    BAS  Calculate lease versus buying values.
MEAN     BAS  Calculate mean, variance and stnd dev.
INCOME   BAS  Calculate income averages for taxes.
FUTURE   BAS  Calculate future value of an investment.
CRITICAL BAS  Critical path method for activities  (Not CP/M!).
COMPOUND BAS  Calculate compound interest.

BALANCE.BAS

10 PRINT "REMAINING BALANCE ON A LOAN"
20 PRINT
30 PRINT "REGULAR PAYMENT"
40 INPUT R
50 PRINT "PRINCIPAL"
60 INPUT P
70 PRINT "# OF PAYMENTS PER YEAR";
80 INPUT N
90 PRINT "ANNUAL INTEREST RATE";
100 INPUT I
110 I=I/100
120 PRINT  "NUMBER OF PAYMENTS MADE";
130 INPUT N1
150 B0=P
160 FOR J1=1 TO N1
170 I1=INT((B0*I/N)*100+O.5)/100
180 A=R-I1
190 B0=B0-A
200 NEXT J1
210 PRINT "REMAINING BALANCE = $";
220 PRINT INT(B0*100+O.5)/100
230 PRINT
240 PRINT "MORE DATA? (1=YES, 0=NO)";
250 INPUT X
260 IF X=1 THEN 20
270 END

BESTLINE.BAS

240 CLS
250 PRINT TAB(30)"LINEAR REGRESSION":PRINT :PRINT
260 INPUT "NUMBER OF KNOWN POINTS";N
270 J=0
280 K=0
290 L=0
300 M=0
310 R2=0
320 REM LOOP TO ENTER COORDINATES OF POINTS
330 FOR I=1 TO N
340 PRINT "X,Y OF POINT ";I;
350 INPUT X,Y
360 REM ACCUMULAT INTERMEDIATE SUMS
370 J=J+X
380 K=K+Y
390 L=L+X^2
400 M=M+Y^2
410 R2=R2+X*Y
420 NEXT I
430 B=(N*R2-K*J)/(N*L-J^2)
440 A=(K-B*J)/N
450 PRINT
460 PRINT "F(X)=";A;"+(";B;"*X)"
470 REM COMPUTE REGRESSION ANALYSIS
480 J=B*(R2-J*K/N)
490 M=M-K^2/N
500 K=M-J
510 PRINT
520 R2=J/M
530 PRINT "COEFFICIENT OF DETERMINATION (R^2)=";R2
540 PRINT "COEFFICIENT OF CORRELATION= ";SQR(R2)
550 PRINT "STANDARD ERROR OF ESTIMATE=";SQR(K/(N-2))
560 PRINT
570 REM ESTIMATE Y-COORDINATES OF POINTS WITH ENTERED X-COORDINATES
580 PRINT "INTERPOLATION:(ENTER X=0 TO END PROGRAM)"
590 PRINT "X=";
600 INPUT X
610 REM RESTART OR END PROGRAM
620 IF X=0 THEN 660
630 PRINT "Y=";A+B*X
640 PRINT
650 GOTO 590
660 END

BOND.BAS

10 CLS
20 KEY OFF
30 PRINT "ACCRUED INTEREST ON BONDS"
40 PRINT
50 PRINT "COMPUTE USING:"
60 PRINT "              1) 360 DAY YEAR"
70 PRINT "              2) 365/366 DAY YEAR"
80 PRINT "              3) END PROGRAM"
90 PRINT "       WHICH";
100 INPUT T
110 ON T GOTO 130,130,1050
120 GOTO 90
130 PRINT
140 PRINT "           COUPON RATE (%)";
150 INPUT I
160 PRINT "NUMBER OF COUPONS PER YEAR";
170 INPUT N
180 X1=0
190 PRINT "DOES THIS COUPON INCLUDE A";
200 PRINT " LONG FIRST YEAR PERIOD (Y/N)";
210 INPUT Z$
220 IF Z$="N" OR Z$="n" THEN 520
230 IF Z$<>"Y" AND Z$<>"y" THEN 190
240 REM  -- SKIP THIS SECTION IF FIRST PERIOD IS NOT LONG
250 PRINT
260 PRINT "  BEGINNING OF FIRST PERIOD";
270 GOSUB 880
280 X2=A4
290 REM  -- ISSUE DATE IS DATE CURRENT BONDHOLDER OBTAINED THE BOND
300 PRINT "                 ISSUE DATE";
310 GOSUB 880
320 REM  -- X1 = NUMBER OF DAYS FROM ISSUE TO END OF PARTIAL PERIOD
330 X1=A4-X2
340 IF X1>0 THEN 380
350 PRINT
360 PRINT "A LONG FIRST PERIOD MUST BEGIN BEFORE ISSUE."
370 GOTO 810
380 PRINT "          FIRST COUPON DATE";
390 GOSUB 880
400 REM  -- X2 = TOTAL NUMBER OF DAYS IN FIRST PERIOD
410 X2=A4-X2
420 IF X2>0 THEN 460
430 PRINT
440 PRINT "A LONG FIRST PERIOD MUST BEGIN BEFORE FIRST COUPON DATE."
450 GOTO 810
460 IF X2-X1>0 THEN 500
470 PRINT
480 PRINT "FIRST COUPON DATE MAY NOT OCCUR BEFORE ISSUE."
490 GOTO 810
500 X1=(X2-X1)/X2
510 GOTO 570
520 PRINT
530 PRINT "BEGINNING OF CURRENT PERIOD";
540 GOSUB 880
550 REM  -- X3 = ABSOLUTE NUMBER OF DAYS FROM IMAGINARY DATE
560 REM  --      00/00/00 TO BEGINNING OF CURRENT PERIOD
570 X3=A4
580 PRINT "      END OF CURRENT PERIOD";
590 GOSUB 880
600 REM  -- X4 = TOTAL NUMBER OF DAYS IN CURRENT PERIOD
610 X4=A4-X3
620 IF X4>=0 THEN 690
630 PRINT
640 IF X$="Y" OR Z$="y" THEN 670
650 PRINT "CURRENT PERIOD MAY NOT END BEFORE IT BEGINS."
660 GOTO 810
670 PRINT "CURRENT PERIOD MAY NOT END BEFORE ISSUE OR FIRST COUPON DATE"
680 GOTO 810
690 PRINT "            SETTLEMENT DATE";
700 GOSUB 880
710 REM  -- X3 = NUMBER OF DAYS FROM BEGINNING OF
720 REM  --      CURRENT PERIOD TO SETTLEMENT DATE
730 X3=A4-X3
740 IF X3>=0 THEN 780
750 PRINT
760 PRINT "SETTLEMENT MAY NOT OCCUR BEFORE ISSUE OR FIRST COUPON DATE"
770 GOTO 810
780 X3=(X3/X4)+X1
790 PRINT
800 PRINT "ACCRUED INTEREST IS";I/N*X3;"% OF PAR."
810 PRINT
820 PRINT "WOULD YOU LIKE TO RE-RUN PROGRM";
830 PRINT " USING NEW DATA (Y/N)?"
840 Z$=INKEY$:IF Z$="" THEN 840
850 IF Z$="Y" OR Z$="y" THEN 40
860 IF Z$="N" OR Z$="n" THEN 1050
870 GOTO 820
880 INPUT " (MM,DD,YY)"; M,D,Y
890 IF T=1 THEN 1030
900 REM  -- SUBROUTINE TO DETERMINE NUMBER OF DAYS BETWEEN IMAGINARY
910 REM  -- DATE 00/00/00 AND MM/DD/YY USING 365/366 DAY YEAR.
920 REM  -- REF. ACCOUNTS PAYABLE & ACCOUNTS RECEIVABLE (WANG), P.255
930 RESTORE
940 DATA 0,3,3,6,8,11,13,16,19,21,24,26
950 FOR I1=1 TO M
960 READ A4
970 NEXT I1
980 A4=A4+Y*365+INT(Y/4)+1+(M-1)*28+D
990 IF INT(Y/4)=Y/4 AND M<3 THEN A4=A4-1
1000 RETURN
1010 REM  -- SUBROUTINE TO COMPUTE NUMBER OF DAYS FROM
1020 REM  -- IMAGINARY DATE 00/00/00 TO MM/DD/YY USING 360 YEAR.
1030 A4=(Y*360)+(M*30)+D
1040 RETURN
1050 END

BUDGET.BAS

100 REM TYPED BY CONNIE FOSTER ,CORRECTED BY C.FOSTER ,PROG BY O.E.DIAL
110 REM ALL REM STATEMENTS CAN BE CHANGED TO ALLOW USE OF TWO TERMINALS
120 REM SEE ARTICLE IN PERSONAL COMPUTING MAY/JUNE 77
130 Q=27:V$="###.#":W$="$$#####,":U$="###"
140 DIM D(18),E$(Q),V(Q),F(Q)
141 CLS:KEY OFF
150 PRINT TAB(19)"RECURSIVE BUDGETING MODEL":PRINT:PRINT TAB(28)"* * *"
151 PRINT:PRINT "If you want a hardcopy, use ALT-PrtSc."
160 DATA SALARY/WAGES,OTHER INCOME,FED INC TAX,STATE & LOCAL TAX
170 DATA SOCIAL SECURITY,UNEMPLOYMENT INS,HEALTH INS
180 DATA LIFE INS,CONTRIBUTIONS,OTHER DEDUCTIONS
190 DATA RENT/MORTGAGE,LIFE INS,HEALTH INS,HOUSE INS
200 DATA AUTO INS,CAR PAYMENTS,LOAN PAYMENTS,TRASH REMOVAL
210 DATA OTHER FIXED EXP
220 DATA FOOD/BEVERAGES,CLOTHING,DRY CLEANING,BARBER/BEAUTY
230 DATA HOME MAINT,HOME HEAT'G FUEL,WATER,ELECTRICITY, TELEPHONE
240 DATA GAS/OIL,AUTO MAINT,FARES/TOLLS/PARKING,DENTIST
250 DATA PHYSICIAN,DRUGS/SUNDRIES,SCHOOL EXPENSE,FAMILY ALLOWANCE
260 DATA CLUBS/LODGES,THEATER/SPORTS,RESTAURANTS
270 DATA OTHER ENT'MENT,MAG'S/BOOKS/PAPERS,SITTERS,CHILD CARE
280 DATA VACATION SAVING,OTHER SAVINGS,CONTRIBUTIONS,OTHER EXPENSES
290 PRINT:PRINT"SELECT YOUR BUDGETING PERIOD BY NUMBER. LATER ON IT WILL"
300 PRINT"BE EXTENDED TO ONE YEAR.":PRINT
310 PRINT TAB(3)"1-WEEKLY"TAB(15)"2-BIWEEKLY"TAB(30)"3-SEMIMONTHLY";
320 PRINT TAB(45)"4-MONTHLY":PRINT
330 INPUT P:IF P>4 THEN PRINT"TRY AGAIN":GOTO 290
340 IF P=1 THEN P=52 ELSE IF P=2 THEN P=26 ELSE IF P=3 THEN P=24 ELSE IF P=4 THEN P=12
350 PRINT:PRINT"ALRIGHT,FIRST LET'S LOOK AT INCOME FOR THE PERIOD.":PRINT
360 READ A$:PRINT A$;" $";:INPUT D(0):READ A$:PRINT A$;" $";:INPUT D(1)
370 TI=D(0)+D(1):PRINT
380 PRINT:PRINT"OK,NOW LET'S LOOK AT PAYCHECK DEDUCTIONS.":PRINT
390 FOR J=2 TO 9:READ A$:PRINT A$;:INPUT" $";D(J):TD=TD+D(J):NEXT J:PRINT
400 PRINT"OK,NOW LET'S LOOK AT FIXED EXPENSES.":PRINT
410 FOR J=10 TO 18:READ A$:PRINT A$;:INPUT" $";D(J):TF=TF+D(J):NEXT J
420 DF=TD+TF:SI=TI-DF:S=64
430 PRINT:PRINT"OK,AT THIS TIME OUR TABLE LOOKS LIKE THIS:":PRINT
440 REM
450 GOSUB 1900:PRINT:PRINT TAB(19);
460 PRINT"RECURSIVE BUDGETING MODEL":PRINT:PRINT TAB(27)"* * *":PRINT
470 GOSUB 1900
480 PRINT:PRINT TAB(20)"SPENDABLE INCOME SUMMARY":PRINT
490 GOSUB 1890:PRINT TAB(3)"ACCOUNT"TAB(42)"PERIOD"TAB(57)"ANNUAL"
500 GOSUB 1890:PRINT"TOTAL INCOME" TAB(40);:PRINT USING W$;TI;:PRINT TAB(55)
510 PRINT USING W$;TI*P:PRINT:PRINT TAB(3)"PAYCHECK DEDUCTIONS"TAB(25);
520 PRINT USING W$;TD*(-1):PRINT
530 PRINT TAB(3)"FIXED EXPENSES"TAB(25);:PRINT USING W$;TF*(-1);
540 PRINT TAB(40);:PRINT USING W$;DF*(-1);:PRINT TAB(55);
550 PRINT USING W$;DF*(-1)*P
560 PRINT TAB(41)"-------"TAB(55)"--------":PRINT"SPENDABLE INCOME";
570 PRINT TAB(40);:PRINT USING W$;SI;:PRINT TAB(55);:PRINT USING W$;SI*P
580 PRINT TAB(41)"======="TAB(55)"========":PRINT:
590 GOSUB 1900:PRINT: PRINT
600 REM
610 GOSUB 1910:RO=0
620 PRINT:PRINT "OK,NOW FOR THE FIRST ROUND OF VARIABLE EXPENSE. DON'T"
630 PRINT"PINCH YOURSELF IN YOUR ESTIMATES (WITHIN REASON). LET THE"
640 PRINT"COMPUTER HELP YOU REFINE YOUR BUDGET LATER ON.":PRINT
650 FOR J=0 TO Q:READ E$(J) :PRINT E$(J);:INPUT" $";V(J):VT=VT+V(J):NEXT J
660 RESTORE:PRINT:PRINT
670 PRINT"YOUR BUDGET FOR THE FIRST ROUND TOTALLED $"VT". THIS"
680 PRINT"COMPARES TO SPENDABLE INCOME OF $"SI". WE HAVE"
690 PRINT"PRORATED THE DIFFERENCE, $"SI-VT",OVER ALL VARIABLE EXPENSE"
700 PRINT"ACCOUNTS.":PRINT
710 GOSUB 1910:FOR J=0 TO Q:V(J)=INT(V(J)/VT*SI):NEXT J:VT=SI:PRINT
720 PRINT"NOW WE BEGIN THE BUDGET REFINEMENT PHASE. MAKE AS MANY"
730 PRINT"PASSES AS YOU LIKE. AS YOU REVIEW EACH ACCOUNT,DECIDE"
740 PRINT"WHETHER TO FREEZE IT OR TO LEAVE IT FOR ANOTHER PASS.":PRINT
750 PRINT"HINT: DON'T BE IN A HURRY TO FREEZE AN ACCOUNT.":PRINT
760 PRINT"YOUR TASK IS FINISHED WHEN ALL ACCOUNTS ARE FROZEN.":PRINT
770 GOSUB 1910
780 FOR J=0 TO Q:PRINT:IF V(J)=0 THEN 980
790 PRINT E$(J);" $";V(J):INPUT"CHANGE ('Y' OR 'N')";A$
800 IF A$="N" THEN 840 ELSE IF A$="Y" THEN 820 ELSE IF A$<>"Y" THEN 790
810 GOTO 790
820 INPUT"REVISED AMOUNT $";A:IF A<V(J) THEN 840
830 GOSUB 1930
840 INPUT"FREEZE ('Y' OR 'N')";B$:PRINT
850 IF A$="Y" AND B$="Y" THEN 900
860 IF A$="Y" AND B$="N" THEN 940
870 IF A$="N" AND B$="N" THEN 980
880 VT=VT-V(J):FT=FT+V(J):SWAP F(J),V(J):V(J)=0:PRINT
890 PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)".":GOTO 980
900 VT=VT-A:FT=FT+A:SWAP A,F(J):V(J)=0
910 FOR K=O TO Q:V(K)=INT(V(K)*(SI-FT)/VT):NEXT K:VT=SI-FT
920 PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)",AND THE DIFFERENCE"
930 PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT:GOTO 980
940 VT=VT-V(J)+A:V(J)=A
950 FOR K=0 TO Q:V(K)=INT(V(K)*(SI-FT)/VT):NEXT K:VT=SI-FT
960 PRINT"OK,THE VALUE HAS BEEN CHANGED TO $"A", AND THE DIFFERENCE"
970 PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT
980 NEXT J:PRINT:R=0:FOR J=0 TO Q:IF V(J)=0 THEN R=R+1:NEXT J
990 IF R<=Q THEN 1010
1000 FOR J=O TO Q:F(J)=INT(F(J)/FT*SI):VT=0:FT=SI:GOTO 1380
1010 PRINT"NOW LET'S RECAP VARIABLE EXPENSES BEFORE GOING ON TO THE"
1020 PRINT"NEXT ROUND.":PRINT:RO=RO+1:V1=0:F1=0
1030 FOR J=0 TO Q:V(J)=INT(V(J)/VT*(SI-FT)):NEXT J:VT=SI-FT
1040 REM
1050 PRINT TAB(7)"INTERIM SUMMARY OF VARIABLE EXPENSES";
1060 PRINT":   NO."RO
1070 GOSUB 1890:PRINT TAB(3)"ACCOUNTS"TAB(28)"NUMBER"TAB(37)"PERCENT";
1080 PRINT TAB(48)"AMOUNT"TAB(56)"PERCENT"
1090 GOSUB 1890:FOR J=0 TO Q:IF V(J)+F(J)=0 THEN 1110
1100 IF V(J) THEN V1=V1+1 ELSE F1=F1+1
1110 NEXT J
1120 PRINT"VARIABLE EXPENSES"TAB(29);:PRINT USING U$;V1;:PRINT TAB(39);
1130 PRINT USING V$;V1/(V1+F1)*100;:PRINT TAB(46);:PRINT USINGW$;VT;
1140 PRINT TAB(58);:PRINT USING V$;VT/TI*100:PRINT
1150 PRINT"FROZEN EXPENSES"TAB(29);:PRINT USINGU$;F1;:PRINT TAB(39);
1160 PRINT USING V$;F1/(V1+F1)*100;:PRINT TAB(46);
1170 PRINT USING W$;FT;:PRINT TAB(58);:PRINT USING V$;FT/TI*100
1180 PRINT TAB(28)"-------"TAB(48)"--------"
1190 PRINT TAB(3)"TOTALS"TAB(29);:PRINT USING U$;F1+V1;:PRINT TAB(46);
1200 PRINT USING W$;VT+FT:PRINT TAB(28)"======="TAB(48)"========":PRINT
1210 GOSUB 1900:PRINT:PRINT
1220 GOSUB 1230:GOTO 1270
1230 PRINT TAB(8)"INTERIM STATUS OF VARIABLE EXPENSES  NO."RO
1240 GOSUB 1890:PRINT TAB(3)"ACCOUNT"TAB(30)"VARIABLE"TAB(43)"FROZEN";
1250 PRINT TAB(54)"PERCENT"
1260 GOSUB 1890:PRINT
1270 FOR J=0 TO Q:IF V(J)+F(J)=0 THEN 1330 ELSE PRINT E$(J);:R2=R2+1
1280 IF F(J) THEN 1300 ELSE PRINT TAB(29):PRINT USING W$;V(J);:PRINT TAB(55);
1290 PRINT USING V$;V(J)/TI*100:GOTO 1320
1300 PRINT TAB(40);:PRINT USING W$;F(J);:PRINT TAB(55);
1310 PRINT USING V$;F(J)/TI*100
1320 IF INT(R2/5)=R2/5 THEN PRINT
1330 NEXT J:PRINT:R2=0
1340 GOSUB 1900:PRINT
1350 REM
1360 PRINT:PRINT "NOW WE MAKE ANOTHER PASS THROUGH VARIABLE EXPENSES.":PRINT
1370 GOTO 770
1380 PRINT"PLEASE INPUT THE REQUESTED INFORMATION BEFORE WE PROVIDE A"
1390 PRINT"FINAL DETAIL OF YOUR BUDGET.":PRINT
1400 PRINT TAB(18)"* USE NO COMMAS NOR COLONS *":PRINT
1410 INPUT"NAME";A$:INPUT"BUDGET YEAR";A
1420 B=LEN(A$):B=16-B/2
1430 REM
1440 GOSUB 1920
1450 GOSUB 1900:PRINT
1460 PRINT TAB(B)"* THE "A$" FAMILY BUDGET FOR"A"*":PRINT
1470 GOSUB 1900:PRINT
1480 PRINT TAB(6)"ACCOUNT"TAB(20)""TAB(26)"INCOME"TAB(38)":";
1490 PRINT TAB(44)"EXPENSE"TAB(56)":PERCENT"
1500 PRINT TAB(20)":-----------------:-----------------: TOTAL"
1510 PRINT TAB(20)": PERIOD : ANNUAL : PERIOD : ANNUAL : INCOME"
1520 PRINT"--------------------:--------:--------:--------:--------:------"
1530 X$=":$$#####,:$$#####,:        :        : ###.#"
1540 Y$=":        :        :$$#####,:$$#####,: ###.#"
1550 GOTO 1570
1560 PRINT":        :        :        :        :":RETURN
1570 PRINT"INCOME"TAB(20);:PRINT USING X$;TI;TI*P;TI/TI*100
1580 PRINT"------"TAB(20);
1590 GOSUB 1560
1600 READ A$:PRINT A$ TAB(20);:PRINT USING X$;D(0);D(0)*P;D(0)/TI*100
1610 READ A$:PRINT A$ TAB(20);:PRINT USING X$;D(1);D(1)*P;D(1)/TI*100
1620 PRINT TAB(20);
1630 GOSUB 1560
1640 PRINT"PAYCHECK DEDUCT'S"TAB(20);
1650 PRINT USING Y$;TD;TD*P;TD/TI*100
1660 PRINT"-----------------"TAB(20);
1670 GOSUB 1560
1680 FOR J=2 TO 9:READ A$:IF D(J)=0 THEN 1700 ELSE PRINT A$ TAB(20);
1690 PRINT USING Y$;D(J);D(J)*P;D(J)/TI*100
1700 NEXT J:PRINT TAB(20);
1710 GOSUB 1560
1720 PRINT"FIXED EXPENSES"TAB(20);
1730 PRINT USING Y$;TF;TF*P;TF/TI*100
1740 PRINT"--------------"TAB(20);
1750 GOSUB 1560
1760 FOR J=10 TO 18:READ A$:IF D(J)=0 THEN 1780 ELSE PRINT A$ TAB(20);
1770 PRINT USING Y$;D(J);D(J)*P;D(J)/TI*100
1780 NEXT J:PRINT TAB(20);
1790 GOSUB 1560
1800 PRINT"VARIABLE EXPENSE"TAB(20);
1810 PRINT USING Y$;FT;FT*P;FT/TI*100
1820 PRINT"----------------"TAB(20);
1830 GOSUB 1560
1840 FOR J=0 TO Q:IF F(J)=0 THEN 1860 ELSE PRINT E$(J) TAB(20);
1850 PRINT USING Y$;F(J);F(J)*P;F(J)/TI*100
1860 NEXT J:PRINT
1870 GOSUB 1900:PRINT
1880 GOSUB 1900:PRINT:GOTO 1980
1890 FOR L=1 TO S:PRINT"-";:NEXT L:PRINT:RETURN
1900 FOR L=1 TO S:PRINT"=";:NEXT L:PRINT:RETURN
1910 PRINT"PRESS 'Y' TO CONTINUE":PRINT:INPUT A$:PRINT:RETURN
1920 FOR L=1 TO 10:PRINT;:NEXT L:RETURN
1930 IF A<=V(J) THEN 1970
1940 IF A<=VT THEN 1970
1950 PRINT"* YOU HAVE EXCEEDED YOUR BALANCE OF SPENDABLE INCOME BY $"A-SI;
1960 PRINT" *":INPUT"REVISED AMOUNT $";A:PRINT
1970 RETURN
1980 RESTORE:READ A$:READ A$:PRINT:PRINT:S=95
1990 PRINT TAB(21)"* EXPENSE BAR CHART *"
2000 PRINT TAB(20)"PERCENT OF TATAL INCOME":PRINT
2010 GOSUB 1890:PRINT
2020 GOSUB 2140:PRINT
2030 FOR J=2 TO 18:READ A$:IF D(J)=0 THEN 2060
2040 A=INT(D(J)/TI*300):PRINT A$;
2050 GOSUB 2170
2060 NEXT J
2070 FOR J=0 TO Q:IF F(J)=0 THEN 2100
2080 A=INT(F(J)/TI*300):PRINT E$(J);
2090 GOSUB 2170
2100 NEXT J:PRINT
2110 GOSUB 2140:PRINT:PRINT
2120 GOSUB 1900:PRINT:PRINT:STOP
2130 REM
2140 PRINT TAB(20)"  -  -  -  -  5  -  -  -  - 10  -  -  -  - 15  -  -  -  ";
2150 PRINT"- 20  -  -  -  - 25":RETURN
2160 RETURN
2170 IF A<1 THEN PRINT TAB(20)"]":GOTO 2200
2180 IF A<2 THEN PRINT TAB(20)"]]":GOTO 2200
2190 PRINT TAB(20);:FOR K=1 TO A:PRINT"]";:NEXT K:PRINT
2200 RETURN
2210 REM
2220 REM
2230 STOP
2240 REM
2250 REM

COMPOUND.BAS

10 CLS:DEFDBL A-Z
20 KEY OFF
30 PRINT "CONTINUOUS INTEREST COMPOUNDING"
40 PRINT :I=0 :N=0 :D=0
50 PRINT "ENTER THE ANNUAL INTEREST RATE";
60 PRINT " TO BE PAID ON THE ACCOUNT"
70 INPUT I
80 IF I<=0 THEN 50
90 PRINT "ENTER THE NUMBER OF YEARS AND FRACTIONS"
100 PRINT " OF YEARS THAT INTEREST WILL ACCRUE"
110 INPUT N
120 IF N<=0 THEN 90
130 PRINT "ENTER YOUR INITIAL DEPOSIT"
140 INPUT D
150 IF D<=0 THEN 130
160 PRINT
170 PRINT "WITH CONTINUOUS COMPOUNDING A DEPOSIT OF $"; D
180 PRINT "GROWS IN";N;"YEARS AT";I;"% TO";
190 PRINT USING "$$#,###,###,###,###.##"; D*EXP(I/100*N)
200 PRINT
210 PRINT "WOULD YOU LIKE TO RERUN PROGRAM USING NEW DATA (Y/N)?"
220 Z$=INKEY$:IF Z$="" THEN 220
230 IF Z$="Y" OR Z$="y" THEN 40
240 IF Z$<>"N" AND Z$<>"n" THEN 210
250 END

CRC.TXT

PC-SIG Disk No. #29, version v1

The following is a list of the file checksums which should be produced by
the CRCK4 program on disk #9 (and others).  If the CRC numbers do not match
you may have a bad file.  To use type:  CRCK4 <filespec>

CRCK4 output for this disk:


CRCK ver 4.2B (MS DOS VERSION )
CTL-S pauses, CTL-C aborts

--> FILE:  BUDGET  .BAS         CRC = 62 B8

--> FILE:  BESTLINE.BAS         CRC = E7 3B

--> FILE:  NUMERIC .BAS         CRC = F1 38

--> FILE:  MEAN    .BAS         CRC = 60 F4

--> FILE:  REGRESS .BAS         CRC = BF 0C

--> FILE:  BALANCE .BAS         CRC = 62 C0

--> FILE:  INCOME  .BAS         CRC = ED C7

--> FILE:  TREASURY.BAS         CRC = 2E AB

--> FILE:  BOND    .BAS         CRC = 35 E6

--> FILE:  COMPOUND.BAS         CRC = 57 B4

--> FILE:  LEASE   .BAS         CRC = DF 16

--> FILE:  PVTAX   .BAS         CRC = E5 49

--> FILE:  FUTURE  .BAS         CRC = 22 1A

--> FILE:  NETPREST.BAS         CRC = D6 01

--> FILE:  CRITICAL.BAS         CRC = 78 A3

--> FILE:  PERT    .BAS         CRC = 7A E6

 ---------------------> SUM OF CRCS = 17 FA

DONE

These and other Public Domain and user-supported programs from:

PC Software Interest Group
1125 Stewart Ct  Suite G
Sunnyvale, CA 94086
(408) 730-9291

CRITICAL.BAS

10 REM  CRITICAL PATH METHOD (CPM)
20 REM  A()=START AND END NODES FOR EACH ACTIVITY
30 REM  S()=EARLY START TIMES FOR EACH ACTIVITY
40 REM  F()=LATE FINISH TIMES FOR EACH ACTIVITY
50 REM  E()=DURATIONS AND COSTS OF NORMAL ACTIVITIES
60 REM  C()=DURATIONS AND COSTS OF CRASH ACTIVITIES
70 CLS
80 KEY OFF
90 DIM A(100,2),S(100),F(100),E(100,2),C(100,2)
100 PRINT "CRITICAL PATH METHOD"
110 PRINT
120 PRINT "HOW MANY ACTIVITIES IN THIS NETWORK";
130 INPUT N
140 FOR I=1 TO N
150 PRINT
160 PRINT USING " ENTER START, END NODES FOR ACTIVITY ##"; I;
170 INPUT A(I,1),A(I,2)
180 IF A(I,2)<=A(I,1) THEN 200
190 IF A(I,2)<N THEN 250
200 PRINT " START NODE MUST BE NUMBERED LOWER";
210 PRINT " THAN END NODE, AND END NODE MUST";
220 PRINT " BE LESS THAN THE NUMBER OF ACTIVITIES.";
230 PRINT "       *** TRY ENTRY AGAIN ***"
240 GOTO 150
250 PRINT SPC(16)"ENTER DURATION AND COST";
260 INPUT E(I,1),E(I,2)
270 S(I)=0
280 F(I)=0
290 NEXT I
300 REM  LOOP TO FIND EARLY START TIMES FOR NETWORK
310 FOR I=1 TO N
320 IF S(A(I,2))>=S(A(I,1))+E(I,1) THEN 340
330 S(A(I,2))=S(A(I,1))+E(I,1)
340 NEXT I
350 F(A(N,2))=S(A(N,2))
360 REM  LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK
370 FOR I=N TO 1 STEP -1
380 IF F(A(I,1))=0 THEN 410
390 IF F(A(I,1))>F(A(I,2))-E(I,1) THEN 410
400 GOTO 420
410 F(A(I,1))=F(A(I,2))-E(I,1)
420 NEXT I
430 C1=0
440 L=0
450 PRINT
460 REM  CALCULATE SLACK TIME IN S1
470 PRINT "START END  EARLY  LATE"
480 PRINT "NODE  NODE START FINISH DUR. SLACK COST"
490 FOR I=1 TO N
500 PRINT A(I,1);TAB(7);A(I,2);TAB(12);S(A(I,1));TAB(18);
510 PRINT F(A(I,2));TAB(25);E(I,1);TAB(30);
520 S1=F(A(I,2))-S(A(I,1))-E(I,1)
530 IF S1>0 THEN 580
540 IF L>=F(A(I,2)) THEN 580
550 PRINT "CRIT.";
560 L=L+E(I,1)
570 GOTO 590
580 PRINT S1;
590 PRINT TAB(36);E(I,2)
600 C1=C1+E(I,2)
610 NEXT I
620 PRINT
630 PRINT "THE CRITICAL PATH LENGTH IS ";L
640 PRINT "TOTAL COST OF THIS NETWORK= ";C1
650 PRINT
660 PRINT "DO YOU WANT TO CHANGE ANY";
670 PRINT " ACTIVITY DURATIONS (Y/N)";
680 INPUT A$
690 IF A$="N" OR A$="n" THEN 870
700 IF A$<>"Y" AND A$<>"y" THEN 650
710 PRINT
720 PRINT "WHICH ACTIVITY ";
730 INPUT I
740 IF I<1 THEN 710
750 IF I>N THEN 710
760 PRINT "CURRENT DURATION IS ";E(I,1)
770 PRINT "COST = ";E(I,2)
780 PRINT "ENTER NEW DURATION AND COST ";
790 INPUT E(I,1),E(I,2)
800 PRINT "-----RECALCULATION NETWORK-----"
810 PRINT
820 FOR I=1 TO N
830 S(I)=0
840 F(I)=0
850 NEXT I
860 GOTO 300
870 END

FUTURE.BAS

10 CLS
20 KEY OFF
30 PRINT "FUTURE VALUE OF AN INVESTMENT"
40 DEFDBL A-Z:DEFINT N,J
50 DEF FNA(X)=INT(X*100+0.5)/100
60 PRINT
70 PRINT "  NUMBER OF CASH FLOWS ";
80 INPUT N
90 PRINT "       GROWTH RATE (%) ";
100 INPUT R
110 R=R/100
120 PRINT
130 T=0
140 PRINT "(ENTER INFLOWS AS POSITIVE,";
150 PRINT " OUTFLOWS AS NEGATIVE)"
160 FOR J = 1 TO N
170 IF J>1 THEN 200
180 PRINT "AMOUNT OF CASH FLOW ";
190 GOTO 210
200 PRINT "                    ";
210 PRINT J;
220 INPUT C
230 REM  ADD FUTURE VALUES OF EACH YEAR BASED ON RATE OF R
240 T=T+FNA(C*(1+R)^(N-J))
250 NEXT J
260 PRINT
270 PRINT "FUTURE VALUE AT END OF PERIOD";N;"=";
280 PRINT USING "$$,###,###,###.##"; T
290 REM  RESTART OF END PROGRAM?
300 PRINT
310 PRINT "DO YOU WANT TO RE-RUN THIS PROGRAM";
320 PRINT " WITH NEW DATA (Y/N)?"
330 Z$=INKEY$:IF Z$="" THEN 330
340 IF Z$="Y" OR Z$="y" THEN 60
350 IF Z$<>"N" AND Z$<>"n" THEN 310
360 END

INCOME.BAS

10 REM  ///// INCOME AVERAGING /////
20 REM  CLEAR SCREEN
30 CLS
40 KEY OFF
50 PRINT SPC(32)
60 COLOR 1:PRINT "Income Averaging":COLOR 7
70 REM  ROUNDOFF FUNCTION            '70 REM ROUND OFF TO WHOLE DOLLARS
80 DEF FNR(X)=INT(100*X+0.5)/100      'DEF FNR (X)=INT(X+0.5)
90 PU$="$$###,###.##"                'PU$="  $$,###,###"
100 REM  A() HOLDS SCHEDULE G AMOUNTS
110 REM  B(), C() AND R() ARE FOR TAX RATE SCHEDULES
120 DIM A(46),B(4,16),C(4,16),R(4,16)
130 REM  READ TAX RATE SCHEDULES
140 GOSUB 2970
150 REM  CLEAR SCHEDULE G FOR NEXT TAXPAYER
160 FOR I=1 TO 46
170 A(I)=0
180 NEXT I
190 PRINT
200 PRINT "Enter taxpayer's name: ";
210 LINE INPUT; Z$
220 PRINT
230 PRINT "   Enter taxable year:";
240 INPUT " ",A(1)
250 IF A(1)>1980 THEN 280
260 PRINT "This program is for the years 1981 and thereafter."
270 GOTO 220
280 PRINT
290 PRINT "Enter filing status ..."
300 PRINT "   1 for Single"
310 PRINT "   2 for Married/Joint"
320 PRINT "   3 for Married/Separate"
330 PRINT "   4 for Head of Household"
340 PRINT "   5 for Qualifying Widow(er)"
350 INPUT " "; F
360 IF F<1 OR F>5 THEN PRINT "Please, 1 through 5 only.":GOTO 280
370 PRINT
380 REM
390 REM  **** BASE PERIOD INCOME AND ADJUSTMENTS ****
400 REM
410 REM  ENTER INCOME AMOUNTS--
420 PRINT "Enter the amount from:"
430 PRINT " Form 1040--line 34"
440 PRINT " Form 1040A (1977 and 1978)--line 10"
450 PRINT " Form 1040A (1979 and 1980)--line 11"
460 PRINT
470 FOR J=1 TO 4
480 PRINT "for"; A(1)-J;
490 INPUT ;""; A(J+1)
500 PRINT TAB(21)
510 PRINT "How many exemptions were claimed";
520 INPUT B
530 REM  EXEMPTIONS ARE $1000 EACH 1979 & AFTER, $750 EACH BEFORE 1979
540 A(J+5)=1000*B
550 IF A(1)-J>1978 THEN 570
560 A(J+5)=750*B
570 A(J+9)=A(J+1)-A(J+5)
580 NEXT J
590 PRINT
600 PRINT "Most taxpayers don't have excluded foreign income,"
610 PRINT "  amounts subject to a penalty under section 72(m)(5),"
620 PRINT "  or excess community income."
630 PRINT "Do you have any of these items (Y/N)";
640 INPUT W$
650 PRINT
660 IF W$="N" OR W$="n" THEN 790
670 FOR I=1 TO 4
680 PRINT "Excluded foreign income for"; A(1)-I;
690 INPUT A(15+I)
700 IF A(15+I)<0 THEN PRINT "Can not be less than zero.":GOTO 680
710 NEXT
720 PRINT
730 PRINT "Enter amounts subject to penalty, section 72(m)(5)";
740 INPUT A(20)
750 PRINT SPC(21)"Enter excess community income";
760 INPUT A(21)
770 PRINT
780 REM  ADD UP BASE PERIOD INCOME COLUMNS (a) THROUGH (d)
790 A(22)=A(10)+A(16)
800 A(23)=A(11)+A(17)
810 A(24)=A(12)+A(18)
820 A(25)=A(13)+A(19)
830 REM  BASE PERIOD INCOME CANNOT BE NEGATIVE
840 FOR I=22 TO 25
850 IF A(I)>0 THEN 870
860 A(I)=0
870 NEXT I
880 REM
890 REM  **** COMPUTATION OF AVERAGABLE INCOME ****
900 REM
910 REM  6. TAXABLE INCOME FROM FORM 1040, LINE 34
920 PRINT "Enter taxable income for"; A(1);
930 INPUT A(26)
940 PRINT
950 REM  8. SUBTRACT LINE 7 FROM LINE 6
960 A(27)=A(26)-A(20)
970 REM  9. EXCESS COMMUNITY INCOME IS A(21)
980 REM  10. ADJUSTED TAXABLE INCOME
990 A(28)=A(27)-A(21)
1000 REM  LINE 10 CANNOT BE NEGATIVE
1010 IF A(28)>=0 THEN 1040
1020 A(28)=0
1030 REM  11. TOTAL BASE PERIOD INCOME
1040 A(29)=A(22)+A(23)+A(24)+A(25)
1050 REM 12. 30% OF LINE 11
1060 A(30)=FNR(A(29)*0.3)
1070 REM  13. AVERAGEABLE INCOME
1080 A(31)=A(28)-A(30)
1090 IF A(31)>3000 THEN 1210
1100 PRINT Z$;
1110 PRINT " does NOT qualify for averaging."
1120 PRINT "Averageable income for"; A(1); "is ";
1130 PRINT USING "$$#,###"; A(31);:PRINT ","
1140 PRINT SPC(22)"which is  $3,000 or less."
1150 PRINT
1160 GOTO 2420
1170 REM
1180 REM  **** COMPUTATION OF TAX ****
1190 REM
1200 REM  14. AMOUNT FROM LINE 12
1210 A(32)=A(30)
1220 REM  15. 20% OF LINE 13
1230 A(33)=FNR(A(31)*0.2)
1240 REM  16. TOTAL (ADD LINES 14 AND 15)
1250 A(34)=A(32)+A(33)
1260 REM  17. EXCESS COMMUNITY INCOME IS A(21)
1270 REM  18. TOTAL (ADD LINES 16 AND 17)
1280 A(35)=A(34)+A(21)
1290 REM  19. TAX ON LINE 18 AMOUNT
1300 S=A(35)
1310 GOSUB 2660
1320 A(36)=T
1330 REM  20. TAX ON LINE 16 AMOUNT
1340 S=A(34)
1350 GOSUB 2660
1360 A(37)=T
1370 REM  21. TAX ON LINE 14 AMOUNT
1380 S=A(32)
1390 GOSUB 2660
1400 A(38)=T
1410 REM  22. SUBTRACT LINE 21 FROM LINE 20
1420 A(39)=A(37)-A(38)
1430 REM  23. MULTIPLY LINE 22 AMOUNT BY 4
1440 A(40)=4*A(39)
1450 REM  IF NO SECTION 72(m)(5) PENALTY INCOME, SKIP TO LINE 28
1460 IF A(20)=0 THEN 1580
1470 REM  24. TAX ON LINE 6 AMOUNT
1480 S=A(26)
1490 GOSUB 2660
1500 A(41)=T
1510 REM  25. TAX ON LINE 8 AMOUNT
1520 S=A(27)
1530 GOSUB 2660
1540 A(42)=T
1550 REM  26. SUBTRACT LINE 25 FROM LINE 24
1560 A(43)=A(41)-A(42)
1570 REM  27.  ADD LINES 19, 23 AND 26
1580 A(44)=A(36)+A(40)+A(43)
1590 REM  28. MULTIPLY LINE 27 BY .0125
1600 A(45)=A(44)*0.0125
1610 REM  29. TAX (SUBTRACT LINE 28 FROM LINE 27)
1620 A(46)=A(44)-A(45)
1630 REM
1640 REM  **** PRINT SCHEDULE G ****
1650 REM
1660 PRINT "For ";Z$;". the tax for";A(1);
1670 PRINT "using income averaging,"
1680 PRINT "comes to"; : PRINT USING PU$; A(46)
1690 PRINT "THE FOLLOWING REPRESENTS THE FILLED-IN";
1700 PRINT " SCHEDULE G USING THE 1981 FORMAT:"
1710 PRINT
1720 PRINT " SCHEDULE G"SPC(17)"Income Averaging"SPC(22) A(1)
1730 PRINT Z$;TAB(31)
1740 PRINT "Filing status: ";
1750 ON F GOTO 1760,1780,1800,1820,1840
1760 PRINT "Single"
1770 GOTO 1850
1780 PRINT "Married/Joint"
1790 GOTO 1850
1800 PRINT "Married/Separate"
1810 GOTO 1850
1820 PRINT "Unmarried Head of Household"
1830 GOTO 1850
1840 PRINT "Qualifying Widow(er)"
1850 PRINT "Base Period";
1860 PRINT SPC(20)"(a)"SPC(9)"(b)"SPC(9)"(c)"SPC(9)"(d)"
1870 PRINT "Income and Adjustments ";
1880 FOR I=1 TO 4
1890 PRINT SP(6) A(1)-I;
1900 NEXT
1910 PRINT
1920 REM  PRINT LINE 1
1930 I=2:J=1
1940 GOSUB 2490
1950 REM  PRINT LINES 2a AND 2b
1960 PRINT "Line  2a"TAB(24)
1970 FOR J=1 TO 4
1980 IF A(1)-J<1979 THEN PRINT USING PU$; A(5+J); ELSE PRINT SPC(12)
1990 NEXT
2000 PRINT
2010 PRINT "Line  2b"TAB(24)
2020 FOR J=1 TO 4
2030 IF A(1)-J>1978 THEN PRINT USING PU$; A(5+J); ELSE PRINT SPC(12)
2040 NEXT
2050 PRINT
2060 REM  PRINT LINE 3
2070 I=10:J=3
2080 GOSUB 2490
2090 REM  PRINT LINE 4
2100 I=16:J=4
2110 GOSUB 2490
2120 REM  PRINT LINE 5
2130 I=22:J=5
2140 GOSUB 2490
2150 PRINT "Computation of Averageable Income"
2160 PRINT "Line  6"TAB(60):PRINT USING PU$; A(26)
2170 PRINT "Line  7"TAB(60):PRINT USING PU$; A(20)
2180 PRINT "Line  8"TAB(60):PRINT USING PU$; A(27)
2190 PRINT "Line  9"TAB(60):PRINT USING PU$; A(21)
2200 FOR J=10 TO 13
2210 PRINT "Line";J;
2220 IF J=11 THEN PRINT TAB(48) ELSE PRINT TAB(60)
2230 PRINT USING PU$; A(J+18)
2240 NEXT J
2250 REM  WAIT FOR OPERATOR CUE TO CONTINUE
2260 GOSUB 2590
2270 PRINT "Computation of Tax"
2280 FOR J=14 TO 16
2290 PRINT "Line";J;TAB(60):PRINT USING PU$; A(J+18)
2300 NEXT J
2310 PRINT "Line 17"TAB(60):PRINT USING PU$; A(21)
2320 FOR J=18 TO 29
2330 PRINT "Line";J;
2340 IF J>19 AND J<23 OR J=24 OR J=25 THEN PRINT TAB(48):GOTO 2360
2350 PRINT TAB(60)
2360 PRINT USING PU$; A(J+17)
2370 NEXT J
2380 PRINT
2390 PRINT STRING$(26,"*")" END OF SCHEDULE G "STRING$(26,"*")
2400 PRINT
2410 REM  WAIT BEFORE ERASING SCREEN FOR NEXT TAXPAYER
2420 PRINT "Enter 'C' to continue with next taxpayer. ";
2430 INPUT "",W$
2440 IF W$="C" OR W$="c" THEN CLS:GOTO 160
2450 END
2460 REM
2470 REM  *** SUBROUTINE TO PRINT ALL OF LINE 1,3,4 OR 5 ***
2480 REM
2490 PRINT "Line "; J; TAB(24)
2500 FOR J=0 TO 3
2510 PRINT USING PU$; A(I+J);
2520 NEXT J
2530 PRINT
2540 RETURN
2550 REM
2560 REM  *** SUBROUTINE TO WAIT FOR OPERATOR CUE TO CONTINUE
2570 REM    SINCE ENTIRE SCHEDULE G DOESN'T FIT ON ONE SCREEN ***
2580 REM
2590 PRINT "Press [RETURN] to continue. ";
2600 INPUT "",W$
2610 RETURN
2620 REM
2630 REM  *** SUBROUTINE TO CALCULATE TAX ON AMOUNT S ***
2640 REM
2650 REM  INITIALIZE TAX TO ZERO
2660 T=0
2670 REM  SINGLE HAS 16 BRACKETS, ALL OTHERS HAVE 15
2680 K=15
2690 IF F>1 THEN 2720
2700 K=16
2710 REM  DETERMINE WHETHER TO USE SCHEDULE X, Y OR Z
2720 I=F
2730 REM  WIDOW(ER) SAME AS MARRIED/JOINT
2740 IF F<5 THEN 2770
2750 I=2
2760 REM  START WITH ZERP BRACLET A,PIMT
2770 J=1
2780 REM  IS INCOME <= ZERO BRACKET AMOUNT?
2790 IF S<=C(I,J) THEN 2920
2800 REM IS INCOME > THIS BRACKET'S CEILING?
2810 IF S>C(I,J+1) THEN 2870
2820 REM  FOUND PROPER TAX BRACKET--
2830 REM  --COMPUT TAX ON BALANCE OF INCOME
2840 T=(S-C(I,J))*R(I,J)/100+B(I,J)
2850 GOTO 2920
2860 REM  PROCEED TO NEXT BRACKET
2870 J=J+1
2880 IF J<K THEN 2810
2890 REM  TAX ON BALANCE OF INCOME IS AT HIGHEST RATE
2900 GOTO 2840
2910 REM  ROUND TAX AMOUNT
2920 T=FNR(T)
2930 RETURN
2940 REM
2950 REM  ***   SUBROUTINE TO READ TAX RATES   ***
2960 REM
2970 RESTORE
2980 REM  FIRST SCHEDULE X
2990 FOR J=1 TO 16
3000 READ B(1,J),R(1,J),C(1,J)
3010 NEXT J
3020 REM  THEN SCHEDULES Y & Z
3030 FOR I=2 TO 4
3040 FOR J=1 TO 15
3050 READ B(I,J),R(I,J),C(I,J)
3060 NEXT J
3070 NEXT I
3080 RETURN
3090 REM
3100 REM  ***** 1979 TAX RATE SCHEDULES X, Y AND Z *****
3110 REM
3120 REM  FOR EACH TABLE BELOW, GET BASE, RATE AND
3130 REM  CUTOFF DATA TRIPLET FROM THE RIGHTMOST THREE
3140 REM  COLUMNS OF THE APPROPRIATE SCHEDULE
3150 REM
3160 REM  ----SCHEDULE X (SINGLE TAXPAYERS)----
3170 REM
3180 DATA 0,14,2300,154,16,3400,314,18,4400,692,19,6500,1072,21,8500
3190 DATA 1555,24,10800,2059,26,12900,2605,30,15000,3565,34,18200
3200 DATA 5367,39,23500,7434,44,28800,9766,49,34100,13392,55,41500
3210 DATA 20982,63,55300,37677,68,81800,55697,70,108300
3220 REM
3230 REM  ----SCHEDULE Y (JOINT/WIDOW)----
3240 REM
3250 DATA 0,14,3400,294,16,5500,630,18,7600,1404,21,11900,2265,24,16000
3260 DATA 3273,28,20200,4505,32,24600,6201,37,29900,8162,43,35200,12720
3270 DATA 49,45800,19678,54,60000,33502,59,85600,47544,64,109400
3280 DATA 81464,68,162400,117504,70,215400
3290 REM
3300 REM  ----SCHEDULE Y (SEPARATE)----
3310 REM
3320 DATA 0,14,1700,147,16,2750,315,18,3800,702,21,5950,1132.50,24,8000
3330 DATA 1636.50,28,10100,2252.50,32,12300,3100.50,37,14950,4081,43
3340 DATA 17600,6360,49,22900,9839,54,30000,16751,59,42800,23772,64
3350 DATA 54700,40732,68,81200,58752,70,107700
3360 REM
3370 REM  ----SCHEDULE Z (UNMARRIED HEAD OF HOUSEHOLD)----
3380 REM
3390 DATA 0,14,2300,294,16,4400,630,18,6500,1026,22,8700,1708,24,11800
3400 DATA 2476,26,15000,3308,31,18200,4951,36,23500,6859,42,28800,9085
3410 DATA 46,34100,13961,54,44700,22547,59,60600,35055,63,81800,51750
3420 DATA 68,108300,87790,70,161300
3430 END

LEASE.BAS

10 CLS
20 KEY OFF
30 PRINT "LEASE/BUY DECISION"
40 DEFDBL A-Z:DEFINT Y,Z
50 REM  - FUNCTION TO ROUND TO NEAREST HUNDREDTH
60 DEF FNA(X)=INT(X*100+0.5)/100
70 PRINT
80 PRINT "ENTER THE COST TO ACQUIRE ASSET ";
90 PRINT "(PRINCIPAL OF LOAN) ";
100 INPUT B1
110 PRINT "ENTER THE INTEREST RATE (%) ";
120 INPUT I1
130 REM  - CONVERT INTEREST RATE TO DECIMAL
140 I1=I1/100
150 PRINT "ENTER THE TERM IN YEARS ";
160 INPUT Y1
170 PRINT "WHAT IS THE SALVAGE VALUE ";
180 PRINT "AT THE END OF";Y1;"YEARS ";
190 INPUT S1
200 PRINT
210 PRINT "WHAT IS THE TAX RATE (%) ";
220 INPUT R1
230 REM  - CONVERT TAX RATE TO DECIMAL
240 R1=R1/100
250 PRINT "ENTER THE ANNUAL AMOUNT ";
260 PRINT "OF LOAN PAYMENTS ";
270 INPUT A1
280 PRINT "ENTER THE ANNUAL AMOUNT ";
290 PRINT "OF LEASE PAYMENTS ";
300 INPUT A2
310 REM  - RESET TOTAL AMOUNTS TO ZERO
320 T1=0
330 L1=0
340 PRINT
350 PRINT "ENTER THE DEPRECIATION AMOUNT ";
360 PRINT "FOR EACH YEAR"
370 PRINT
380 REM  - LOOP TO INPUT, CALCULATE AND ACCUMULATE
390 REM  - VALUES FOR EACH YEAR
400 FOR Z=1 TO Y1
410 IF Z>1 THEN 440
420 PRINT "YEAR NUMBER";
430 GOTO 450
440 PRINT SPC(11);
450 PRINT Z;
460 INPUT D1
470 REM  - CALCULATE INTEREST AMOUNT FOR EACH YEAR
480 B0=ABS(B1-FNA(B1*(1+I1)))
490 REM  - CONVERT D1 TO PRESENT VALUE OF COST
500 REM  - OF OWNING EACH YEAR
510 D1=FNA((A1-FNA((D1+B0)*R1))/((1+I1)^Z))
520 REM  - SUBTRACT ANNUAL PAYMENT,
530 REM  - ADD ANNUAL INTEREST TO PRINCIPAL
540 B1=B1-A1+B0
550 REM  - SUM PRESENT VALUE AMOUNTS OF EACH YEAR
560 T1=T1+D1
570 REM  - COMPUTE PRESENT VALUE OF COST TO LEASE FOR EACH YEAR
580 L1=L1+FNA((A2-(A2*R1))/(1+I1)^Z)
590 NEXT Z
600 REM  - SUBTRACT PRESENT VALUE OF SALVAGE VALUE
610 REM  - FROM TOTAL COST TO OWN
620 T1=T1-FNA(S1/(1+I1)^Y1)
630 REM  -OUTPUT RESULTS
640 PU$="$$,###,###,###.##"
650 PRINT
660 PRINT "PRESENT VALUE OF COST OF LOAN  =";
670 PRINT USING PU$; T1
680 PRINT "PRESENT VALUE OF COST OF LEASE =";
690 PRINT USING PU$; L1
700 PRINT
710 IF L1<T1 THEN 750
720 PRINT "ADVANTAGE OF BUYING =";
730 PRINT USING PU$;L1-T1
740 GOTO 770
750 PRINT "ADVANTAGE OF LEASING =";
760 PRINT USING PU$;T1-L1
770 PRINT
780 REM  - RESTART OR END PROGRAM?
790 PRINT "WOULD YOU LIKE TO RE-RUN THIS PROGRAM";
800 PRINT " WITH NEW DATA (Y/N)?"
810 Z$=INKEY$:IF Z$="" THEN 810
820 IF Z$="Y" OR Z$="y" THEN 70
830 IF Z$<>"N" AND Z$<>"n" THEN 790
840 END

MEAN.BAS

10 PRINT "MEAN, VARIANCE,  ";
20 PRINT "STANDARD DEVIATION"
30 PRINT
40 PRINT "METHOD (0=POPULATION,  1=SAMPLE);
41 INPUT S
50 PRINT "DATA (0=GROUPED, 1=UNGROUPED);
60 INPUT K
70 PRINT "NUMBER OF OBSERVATIONS";
80 INPUT N
90 R=0
100 M=0
110 P=0
120 IF K=1 THEN 230
130 FOR I=1 TO N
140 PRINT "ITEM, FREQUENCY ";I;
150 INPUT A,B
160 R=R+B*A
170 P=P+B
180 M=M+B*A^2
190 NEXT I
200 R=R/P
210 V=(M-P*R^2)/(P-S)
220 GOTO 310
230 FOR I=1 TO N
240 PRINT  "ITEM ";I;
250 INPUT D
260 P=P+D
270 M=M+D^2
280 NEXT I
290 R=P/N
300 V=(M-N*R^2)/(N-S)
310 PRINT
320 PRINT  "MEAN","VARIANCE"
330 PRINT R,V
340 PRINT
350 PRINT  "STANDARD DEVIATION"
360 PRINT SQR(V)
370 PRINT
380 PRINT "MORE DATA? (1=YES,  0=NO)";
390 INPUT S
400 IF S=1 THEN 30

NETPREST.BAS

10 CLS
20 KEY OFF
30 PRINT "NET PRESENT VALUE"
40 DEFDBL A-Z:DEFINT J,N
50 DEF FNA(X)=INT(X*100+0.5)/100
60 PRINT
70 PRINT "INVESTMENT ";
80 INPUT C0
90 C0=-FNA(C0)
100 PRINT "NUMBER OF YEARS ";
110 INPUT N
120 DIM C(N)
130 PRINT "REQUIRED RATE OF RETURN (%) ";
140 INPUT R
150 R=R/100+1
160 F=0
170 PRINT
180 PRINT "ENTER CASH FLOW AMOUNTS EACH YEAR ";
190 PRINT "(ENTER OUTFLOWS AS NEGATIVE)."
200 PRINT
210 FOR J=1 TO N
220 IF J>1 THEN 250
230 PRINT "INFLOW FOR YEAR";
240 GOTO 260
250 PRINT "               ";
260 PRINT J;
270 INPUT C(J)
280 F=F+FNA(C(J))
290 NEXT J
300 T=C0
310 REM  ADD PRESENT VALUES FOR EACH YEAR BASED ON RATE OF R
320 FOR J=1 TO N
330 T=T+FNA(C(J)/R^J)
340 NEXT J
350 PRINT
360 PRINT "NET PRESENT VALUE =";
370 PRINT USING "$$,###,###,###.##"; T
380 REM  RESTART OF END PROGRAM?
390 PRINT
400 PRINT "DO YOU WANT TO RE-RUN THIS PROGRAM";
410 PRINT " WITH NEW DATA (Y/N)?"
420 Z$=INKEY$:IF Z$="" THEN 420
430 IF Z$="Y" OR Z$="y" THEN CLEAR:GOTO 40
440 IF Z$<>"N" AND Z$<>"n" THEN 400
450 END

NUMERIC.BAS

10 CLS
20 KEY OFF
30 PRINT "NUMERIC BASE CONVERSION"
40 PRINT
50 N$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
60 REM  -- VARIABLE 'M' IS THE HIGHEST
70 REM  -- BASE YOU MAY CONVERT FROM / TO
80 M=LEN(N$)
90 PRINT "FROM BASE (0 TO END) ";
100 INPUT B1
110 REM  -- END PROGRAM?
120 IF B1=0 THEN 550
130 REM  -- TEST FOR VALID INPUT BASE
140 IF B1>1 THEN 170
150 PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN. "
160 GOTO 90
170 IF B1>M THEN 150
180 PRINT "TO BASE ";
190 INPUT B2
200 IF B2=0 THEN 90
210 REM  -- TEST FOR VALID OUTPUT BASE
220 IF B2>1 THEN 250
230 PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN."
240 GOTO 180
250 IF B2>M THEN 230
260 PRINT "VALUE ";
270 INPUT V$
280 IF V$="0" THEN 180
290 REM  -- FIRST, CONVERT INPUT VALUE TO BASE 10
300 L=LEN(V$)
310 D=0:BAD=0
320 FOR I=1 TO L
330 FOR J=1 TO B1
340 IF MID$(V$,I,1)>MID$(N$,B1,1) THEN BAD=-1
350 IF MID$(N$,J,1)<>MID$(V$,I,1) THEN 370
360 D=D+INT((J-1)*(B1^(L-I))+0.5)
370 NEXT J
380 NEXT I
390 IF BAD THEN 510
400 REM  -- NOW CONVERT BASE 10 VALUE TO
410 REM  -- DESIRED OUTPUT
420 O$=""
430 X=INT(((D/B2)-INT(D/B2))*B2+1.5)
440 O$=MID$(N$,X,1)+O$
450 D=INT(D/B2)
460 IF D>0 THEN 430
470 REM  -- OUTPUT THE RESULT
480 PRINT V$;" BASE";B1;"IS ";O$;" BASE";B2
490 REM  -- LOOP BACK TO ENTER ANOTHER VALUE
500 GOTO 260
510 PRINT "INVALID ENTRY:"
520 PRINT "THERE IS NO SUCH NUMBER '"V$"' (SIC) IN BASE"B1
530 PRINT
540 GOTO 90
550 END

PERT.BAS

10 CLS
20 KEY OFF
30 REM  PROGRAM EVALUATION AND REVIEW TECHNIQUE (PERT)
40 REM  A()=START AND END NODES FOR EACH ACTIVITY
50 REM  S()=EARLY START TIMES FOR EACH ACTIVITY
60 REM  F()=LATE FINISH TIMES FOR EACH ACTIVITY
70 REM  E()=EXPECTED DURATIONS AND VARIANCES OF ACTIVITIES
80 DIM A(99,2),S(99),F(99),E(99,2)
90 DEF FNR(Z1)=INT((Z1*1000+0.5))/1000
100 PRINT "PROGRAM EVALUATION AND REVIEW TECHNIQUE"
110 PRINT
120 PRINT "ENTER THE NUMBER OF";
130 PRINT " ACTIVITIES IN THIS NETWORK";
140 INPUT N
150 FOR I=1 TO N
160 PRINT
170 PRINT USING "------- ACTIVITY ## -------"; I
180 PRINT "ENTER START NODE, END NODE";
190 INPUT A(I,1),A(I,2)
200 IF A(I,2)<=A(I,1) THEN 220
210 IF A(I,2)<N THEN 270
220 PRINT " START NODE MUST BE NUMBERED LOWER";
230 PRINT "  THEN END NODE, AND END NODE MUST"
240 PRINT " BE LESS THAN THE NUMBER OF ACTIVITIES.";
250 PRINT "     *** TRY ENTRY AGAIN ***"
260 GOTO 160
270 PRINT "ENTER THREE TIME ESTIMATES";
280 PRINT " FOR THIS ACTIVITY (A,M,B)";
290 INPUT A1,M,B
300 REM  E(I,1) IS THE EXPECTED DURATION
310 E(I,1)=FNR((A1+M*4+B)/6)
320 REM  E(I,2) IS THE ACTIVITY VARIANCE
330 E(I,2)=FNR((B-A1)/6)^2
340 S(I)=0
350 F(I)=0
360 NEXT I
370 REM  LOOP TO FIND EARLY START TIMES FOR NETWORK
380 FOR I=1 TO N
390 IF S(A(I,2))>=S(A(I,1))+E(I,1) THEN 410
400 S(A(I,2))=S(A(I,1))+E(I,1)
410 NEXT I
420 F(A(N,2))=S(A(N,2))
430 REM  LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK
440 FOR I=N TO 1 STEP -1
450 IF F(A(I,1))=0 THEN 480
460 IF F(A(I,1))>F(A(I,2))-E(I,1) THEN 480
470 GOTO 490
480 F(A(I,1))=F(A(I,2))-E(I,1)
490 NEXT I
500 V=0
510 C=0
520 L=0
530 FOR I=1 TO N
540 REM  CALCULATE SLACK TIME IN S1
550 S1=F(A(I,2))-S(A(I,1))-E(I,1)
560 S1=INT(S1*1000000!+0.5)/1000000!
570 PRINT "--------------------------------------"
580 PRINT
590 PRINT USING "ACTIVITY ## (NODE ## TO NOD ##)"; I; A(I,1); A(I,2);
600 PRINT " IS A ";
610 IF S1<=0 THEN 630
620 PRINT "NON-";
630 PRINT "CRITICAL EVENT."
640 PRINT USING "    EXPECTED DURATION: ###.###          "; E(I,1);
650 PRINT USING "   STANDARD DEVIATION: ###.###"; SQR (E(I,2))
660 IF S1>0 THEN 740
670 PRINT USING "  START NO LATER THAN: ###.###"; S(A(I,1))
680 PRINT USING " MUST BE COMPLETED BY: ###.###"; F(A(I,2))
690 REM  ACCUMULATE PATH LENGTH IN L, VARIANCE IN V
700 IF L>=F(A(I,2)) THEN 720
710 L=F(A(I,2))
720 V=V+E(I,2)
730 GOTO 790
740 PRINT USING "          EARLY START: ###.###          "; S(A(I,1));
750 PRINT USING "           LATE START: ###.###"; F(A(I,2))-E(I,1)
760 PRINT USING "         EARLY FINISH: ###.###   "; S(A(I,1))+E(I,1);
770 PRINT USING "                 LATE FINISH: ###.###"; F(A(I,2))
780 PRINT USING "           SLACK TIME: ###.###"; S1
790 NEXT I
800 PRINT
810 PRINT "             THE CRITICAL PATH LENGTH IS  ";L;
820 P=SQR (V)
830 PRINT "PLUS OR MINUS";P
840 PRINT "ENTER DESIRED COMPLETION TIME (0 TO END) ";
850 INPUT D
860 IF D<=0 THEN 1010
870 REM  CALCULATE Z-SCORE FOR DESIRED DURATION
880 Y=(D-L)/P
890 REM  CALCULATE CUMULATIVE AREA UNDER NORMAL DISTRIBUTION
900 REM  REF: SOME COMMON BASIC PROGRAMS, 3RD ED. P.128
910 R=EXP(-(Y^2)/2)/2.5066282746#
920 Z=Y
930 Y=1/(1+0.33267*ABS(Y))
940 T=1-R*(0.4361836*Y-0.1201676*Y^2+0.937298*Y^3)
950 IF Z>=0 THEN 970
960 T=1-T
970 PRINT "PROBABILITY OF COMPLETION WITH DURATION OF";
980 PRINT D;"IS";T
990 PRINT
1000 GOTO 840
1010 END

PVTAX.BAS

10 CLS
20 KEY OFF
30 DEFDBL A-Z:DEFINT N,J
40 PRINT "PRESENT VALUE OF AN INTEREST TAX DEDUCTION"
50 PRINT
60 PRINT "WHAT IS THE TAX RATE (%) ";
70 INPUT T
80 T=T/100
90 PRINT " ENTER INTEREST RATE (%) ";
100 INPUT K
110 K=K/100
120 PRINT "   NUMBER OF PERIODS     ";
130 INPUT N
140 P=0
150 PRINT "     INTEREST AMOUNT IN DOLLARS"
160 FOR J=1 TO N
170 PRINT USING SPACE$(12)+"FOR PERIOD ##"; J;
180 INPUT Z
190 P=P+Z*T/(1+K)^J
200 NEXT J
210 PRINT
220 PRINT "PRESENT VALUE OF DEDUCTION =";
230 PRINT USING "$$#,###,###.##"; P
240 PRINT
250 PRINT "WOULD YOU LIKE TO RE-RUN THIS PROGRAM";
260 PRINT " WITH NEW DATA (Y/N)?"
270 Z$=INKEY$:IF Z$="" THEN 270
280 IF Z$="Y" OR Z$="y" THEN 50
290 IF Z$<>"N" AND Z$<>"n" THEN 250
300 END

REGRESS.BAS

10 PRINT "LINEAR REGRESSION"
20 PRINT
30 PRINT "NUMBER OF KNOWN POINTS";
40 INPUT N
100 FOR I=1 TO N
110 PRINT "X,Y OF POINT ";I;
120 INPUT X,Y
130 J=J+X
140 K=K+Y
150 L=L+X^2
160 M=M+Y^2
170 R2=R2+X*Y
180 NEXT I
190 B=(N*R2-K*J)/(N*L-J^2)
200 A=(K-B*J)/N
210 PRINT
220 PRINT "F(X) = ";A;" + (";B;" * X)"
230 J=B*(R2-J*K/N)
240 M=M-K^2/N
250 K=M-J
260 PRINT
270 R2=J/M
280 PRINT "COEFFICIENT OF DETERMINATION  (R^2):"
290 PRINT R2
300 PRINT
310 PRINT "COEFFICIENT OF CORRELATION:"
320 PRINT SQR(R2)
330 PRINT
340 PRINT "STANDARD ERROR OF ESTIMATE:"
350 PRINT SQR(K/(N-2))
360 PRINT
370 PRINT "INTERPRETATION: ";
380 PRINT "(ENTER X=0 TO END)"
390 PRINT "X =";
400 INPUT X
410 IF X=0 THEN 450
420 PRINT "Y = ";A+B*X
430 PRINT
440 GOTO 390
450 END

TREASURY.BAS

10 KEY OFF
20 CLS
30 PRINT "CURRENT VALUE OF A TREASURY BILL"
40 DEFDBL P,B:DEFINT M,D,Y,I
50 PRINT
60 PRINT "               FACE VALUE ($)";
70 INPUT P
80 PRINT "        ISSUE DATE (MM,DD,YY)";
90 INPUT M,D,Y
100 GOSUB 490
110 REM  -- X3 = ABSOLUTE NUMBER OF DAYS FROM IMAGINARY
120 REM  --           DATE 00/00/00 TO ISSUE DATE
130 X3=A4
140 PRINT "     MATURITY DATE (MM,DD,YY)";
150 INPUT M,D,Y
160 GOSUB 460
170 REM  -- X4 = TOTAL NUMBER OF DAYS IN PERIOD
180 X4=A4-X3
190 IF X4>=0 THEN 230
200 PRINT
210 PRINT "BILLS DO NOT MATURE BEFORE ISSUED"
220 GOTO 390
230 PRINT "      TODAY'S DATE (MM,DD,YY)";
240 INPUT M,D,Y
250 GOSUB 460
260 REM  -- X3 = NUMBER OF DAYS FROM ISSUE TO TODAY
270 X3=A4-X3
280 IF X3>=0 THEN 320
290 PRINT
300 PRINT "BILLS HAVE NO VALUE BEFORE ISSUED"
310 GOTO 390
320 PRINT "        CURRENT PRICE BID (%)";
330 INPUT B
340 REM  -- X4 = NUMBER OF DAYS LEFT UNTIL MATURITY
350 X4=X4-X3
360 PRINT
370 PRINT "CURRENT VALUE =";
380 PRINT USING "$$#,###,###,###.##";P-P/100*B*X4/360
390 PRINT
400 PRINT "WOULD YOU LIKE TO RE-REUM THIS PROGRAM";
410 PRINT " USING NEW DATA (Y/N)?"
420 Z$=INKEY$:IF Z$="" THEN 420
430 IF Z$="Y" OR Z$="y" THEN 50
440 IF Z$="N" OR Z$="n" THEN 570
450 GOTO 400
460 REM  -- SUBROUTINE TO DETERMINE NUMBER OF DAYS BETWEEN IMAGINARY
470 REM  -- DATE 00/00/00 AND MM/DD/YY USING 365/366 DAY YEAR.
480 REM  -- REF. ACCOUNTS PAYABLE & ACCOUNTS RECEIVABLE (WANG), P.255
490 RESTORE
500 DATA 0,3,3,6,8,11,13,16,19,21,24,26
510 FOR I1=1 TO M
520 READ A4
530 NEXT I1
540 A4=A4+Y*365+INT(Y/4)+1+(M-1)*28+D
550 IF INT(Y/4)=Y/4 AND M<3 THEN A4=A4-1
560 RETURN
570 END

Directory of PC-SIG Library Disk #0029

 Volume in drive A has no label
 Directory of A:\

BALANCE  BAS       512   7-29-82   3:15a
BESTLINE BAS       896   1-01-80  12:03a
BOND     BAS      2816  10-22-82  12:02a
BUDGET   BAS      7808   1-29-83   1:09a
COMPOUND BAS       768  10-22-82  12:02a
CRC      TXT      1310  11-09-84   8:49a
CRCK4    COM      1536  10-21-82   7:54p
CRITICAL BAS      2176  10-22-82  12:03a
FUTURE   BAS       896  10-22-82  12:03a
INCOME   BAS      8832  10-22-82  12:02a
LEASE    BAS      2176  10-22-82  12:02a
MEAN     BAS       640   4-25-82
NETPREST BAS       896  10-22-82  12:03a
NUMERIC  BAS      1280  10-22-82  12:03a
PERT     BAS      3072  10-22-82  12:03a
PVTAX    BAS       640  10-22-82  12:03a
REGRESS  BAS       768   4-25-82
TREASURY BAS      1536  10-22-82  12:02a
       18 file(s)      38558 bytes
                      117760 bytes free