1010 REM ...... THIS IS FILE "IRS.BAS"
1020
1030 REM ******************************
1040 REM ** COMPUTATION OF IRS TAX **
1050 REM ******************************
1060
2000 REM ...... DRIVER FOR TESTING SUBROUTINE IRS TAX
2005 PRINT
2010 INPUT "ENTER MARITAL STATUS (S,MJ,MS,H) : "; STATUS$
2015 IF(STATUS$="E") THEN GO TO 29000
2020 INPUT "ENTER 1977 ADJUSTED GROSS INCOME : "; INCOME
2030 INPUT "ENTER NUMBER OF EXEMPTIONS : "; EXEMPTIONS
2090
2500 REM ...... STANDARD DEDUCTION DETERMINATION
2510 IF(STATUS$="S" ) THEN STDED=2200
2520 IF(STATUS$="MS") THEN STDED=1600
2530 IF(STATUS$="MJ") THEN STDED=3200
2540 IF(STATUS$="H" ) THEN STDED=2200
2571
2572 INPUT "ENTER INCREMENT & LAST INCOME AMOUNT : "; INCREMENT, INCOMELAST
2573 INCOME0=INCOME
2574 FOR INCOME= INCOME0 TO INCOMELAST STEP INCREMENT
2575
2590
2600 REM ...... TAX COMPUTATION
2610 TAXABLE=INCOME-STDED-750*EXEMPTIONS
2650 GOSUB 10000 ! IRS TAX
2660 GTC = 180 MIN TAXABLE*0.02 MAX 35*EXEMPTIONS
2665 IF(STATUS$="MS") THEN GTC=35
2670 TAX=TAX-GTC MAX 0
2690
2800 REM ...... OUTPUT
2810 PRINT USING "INCOME =#######.## TAX =#######.##", INCOME, TAX
2871
2872 NEXT INCOME
2873
2890
2900 REM ...... REPEAT
2910 GO TO 2000
2970
2980
2990
10000 REM ...... SUB : IRS TAX
10010 REM INPUT : STATUS$ = "S" , "MJ" , "MS" , "H"
10020 REM TAXABLE = TAXABLE INCOME
10030 REM OUTPUT : TAX = TAX FROM IRS SCHEDULES X,Y,Z
10090
10100 REM ...... READ IN TAX RATE SCHEDULES
10105 IF(FLAG <> 0) THEN GO TO 10400
10110 FLAG=1
10115 DIM BRACKET(40),SCHEDULE(3,40)
10120 FOR I=1 TO 37
10130 READ BRACKET(I),SCHEDULE(1,I),SCHEDULE(2,I),SCHEDULE(3,I)
10140 NEXT I
10190
10200 REM ...... TAX SCHEDULE DATA
10202
10205 REM BRK X Y Z BRK X Y Z BRK X Y Z BRK X Y Z
10206 REM ------------ ------------ ------------ ------------
10210 DATA 0 14 14 14 .5 15 15 14 1 16 16 16 1.5 17 17 16
10220 DATA 2 19 19 18 4 21 22 19 6 24 25 22 8 25 28 23
10230 DATA 10 27 32 25 12 29 36 27 14 31 39 28 16 34 42 31
10240 DATA 18 36 45 32 20 38 48 35 22 40 50 36 24 40 50 38
10250 DATA 26 45 53 41 28 45 53 42 32 50 55 45 36 50 55 48
10260 DATA 38 55 58 51 40 55 58 52 44 60 60 55 50 62 62 56
10270 DATA 52 62 62 58 60 64 64 58 64 64 64 59 70 66 66 61
10280 DATA 76 66 66 62 80 68 68 63 88 68 68 64 90 69 69 64
10290 DATA 100 70 70 66 120 70 70 67 140 70 70 68 160 70 70 69
10300 DATA 180 70 70 70
10310
10400 REM ...... SET UP TAX COMPUTATION LOOP
10410 IF(STATUS$="S" ) THEN I=1
10420 IF(STATUS$="MJ") THEN I=2 : TAXABLE=TAXABLE/2
10430 IF(STATUS$="MS") THEN I=2
10440 IF(STATUS$="H" ) THEN I=3
10460 J=1
10470 TAX=0
10490
10500 REM ...... TAX COMPUTATION LOOP
10510 J=J+1
10520 IF(J=38) THEN GO TO 10600
10530 IF(TAXABLE < BRACKET(J)*1000) THEN GO TO 10600
10540 IF(J > 1) THEN TAX=TAX+(BRACKET(J)-BRACKET(J-1))*1000*SCHEDULE(I,J-1)/100
10550 GO TO 10500
10590
10600 REM ...... FINISH UP TAX COMPUTATION
10610 TAX=TAX+(TAXABLE-BRACKET(J-1)*1000)*SCHEDULE(I,J-1)/100
10680 IF(STATUS$="MJ") THEN TAXABLE=TAXABLE+TAXABLE : TAX=TAX+TAX
10690
10900 REM ...... END
10910 RETURN
10970
10980
10990
29000 REM ...... END
29010 END