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