* A program to create TAXSIM variables from the public SCF data. Creates a flatfile for the internet TAXSIM program using the 1983 public data.; * Kevin Moore (kevin.b.moore@frb.gov) 5/07; * This version includes the state variable for the non-high income sample - TAXSIM will return federal and state tax information for the non-high income sample, but only federal tax information for the high-income sample (B3001=1); * Users that wish to calculate state tax information for the high-income sample may set the STATE variable to -1 (in two places in the program). This will cause TAXSIM to compute state tax information for each observations in the high income sample for all states. Users may then average the tax variables for the observations in the high-income sample for an approximation of federal and state tax liabilities and rates.; * ASSUMING ALL HHS THAT REPORT FILING SEPARATELY FILE JOINTLY; * NON-INCOME DOLLAR VALUES IN NOMINAL SURVEY YEAR DOLLARS, ALL INCOME AMOUNTS IN NOMINAL DOLLARS FROM ONE YEAR PRIOR TO THE SURVEY; * Items to change in each survey year program 1. Eligibility year for widowed filing status 2. Ceilings on home acquisition and home equity debt 3. Limit on charitable contributions 4. Itemized deduction AGI limits 5. Exemption amounts and phaseout limits 6. Standard deduction amounts 7. All year/dataset/filename references 8. Any SCF variable/question changes 9. Payroll tax rates and limits 10. LT/ST capitol gains/losses ratios; * STATE VARIABLES FOR HI SAMPLE IN THE DATA; OPTIONS MPRINT; OPTIONS LINESIZE=80; LIBNAME SCF83 '/fin/scf3/final/scf83/data/transf/' ACCESS=READONLY; LIBNAME SCF86 '/fin/scf3/final/scf86/data/transf/' ACCESS=READONLY; FILENAME INTAX83 '/fin/scf5/outside/taxsim/data/input/intax83.txt' LRECL=99999; FILENAME TAXSIM83 '/fin/scf5/outside/taxsim/data/output/test/t83pubtax.out' LRECL=99999; FILENAME ECHART83 '/fin/scf5/outside/taxsim/data/input/echart83.raw'; FILENAME CHARIT86 '/fin/scf5/outside/taxsim/data/input/charit86.raw'; FILENAME CHARIT83 '/fin/scf5/outside/taxsim/data/input/charit83.raw'; * HAVE TO ADJUST ALL MACROS FOR PUBLIC DATASET AND FOR USE ON IMPUTED DATA; * conversion to monthly frequency; * NOTE: if per is missing, but amount is given, this macro returns the original value as MOAMT; %MACRO MOCONV(AMT=,PER=,MOAMT=&AMT,IML=YES,WKS=52,HRS=40,YEAR8=NO); IF (&PER=3) THEN &MOAMT=&AMT*&WKS/12; ELSE IF (&PER=4) THEN &MOAMT=&AMT*26*(&WKS/52)/12; ELSE IF (&PER=5) THEN &MOAMT=&AMT; ELSE IF (&PER=6) THEN &MOAMT=&AMT/12; ELSE IF (&PER=7) THEN &MOAMT=&AMT/3; ELSE IF (&PER=0) THEN &MOAMT=0; ELSE IF (&PER>.Z & &PER^=-1 & &PER^=-2) THEN DO; &MOAMT=.; %IF (&IML EQ YES) %THEN %DO; PRINT "ERROR: CANNOT TRANSLATE PER FOR " V1 &AMT &PER &MOAMT; %END; %ELSE %DO; PUT / "ERROR: CANNOT TRANSLATE PER FOR " V1= &AMT= &PER= &MOAMT=; %END; END; ELSE IF (&AMT>.Z & &AMT<-2) THEN DO; &MOAMT=.; %IF (&IML EQ YES) %THEN %DO; PRINT "ERROR: AMOUNT NEGATIVE, CANNOT TRANSLATE " V1 &AMT &PER &MOAMT; %END; %ELSE %DO; PUT / "ERROR: AMOUNT NEGATIVE, CANNOT TRANSLATE " V1= &AMT= &PER= &MOAMT=; %END; END; ELSE IF (&AMT<=.Z) THEN &MOAMT=&AMT; ELSE IF (&AMT^=-1 & &AMT^=-2) THEN DO; %IF (&IML EQ YES) %THEN %DO; PRINT "VALUE NOT CONVERTED FOR " V1 X30075 &PER &AMT "SETTING AMT=."; &MOAMT=.; %END; %ELSE %DO; PUT "VALUE NOT CONVERTED FOR " V1= &PER= &AMT= "SETTING AMT=."; &MOAMT=.; %END; END; %MEND MOCONV; %MACRO ACONV(F); ((&F=3)*52.18+(&F=4)*26.09+(&F=5)*12+(&F=6)+(&F=7)*4) %MEND ACONV; %MACRO MORTPAY(AMTB=,MPAY=,IR=,TERM=); &MPAY=ROUND((MORT((&AMTB),.,((&IR/1000)/12),(&TERM))),.01); %MEND MORTPAY; * Creating the 83 and 86 datasets for use in the Stata program charity86.do, which estimates charitable contributions for the 1983 SCF using the 1986 SCF; DATA OUT83; SET SCF83.SCF83B; IF B3001^=3; WGT=B3019; INCCL1=(B3201 < 10000); INCCL2=(10000 <= B3201 < 25000); INCCL3=(25000 <= B3201 < 50000); INCCL4=(50000 <= B3201 < 100000); INCCL5=(B3201 > 100000); NETWCL1=(B3324 < 25000); NETWCL2=(25000 <= B3324 < 75000); NETWCL3=(75000 <= B3324 < 150000); NETWCL4=(150000 <= B3324 < 300000); NETWCL5=(300000 <= B3324 < 1000000); NETWCL6=(B3324 >= 1000000); RAGECL1=(0 < B4504 < 35); RAGECL2=(35 <= B4504 < 45); RAGECL3=(45 <= B4504 < 55); RAGECL4=(55 <= B4504 < 65); RAGECL5=(65 <= B4504 < 75); RAGECL6=(B4504 >= 75); RSEX=(B3126=1); MARRIED=(B3112 IN(1)); PERSEXP=1+(B3128 IN(2 3)); KIDS=(B3128 IN(4))*(B3130 < 19) + (B3131 IN(4))*(B3133 < 19) + (B3134 IN(4))*(B3136 < 19) + (B3137 IN(4))*(B3139 < 19) + (B3140 IN(4))*(B3142 < 19) + (B3143 IN(4))*(B3145 < 19) + (B3146 IN(4))*(B3148 < 19) + (B3149 IN(4))*(B3151 < 19) + (B3152 IN(4))*(B3154 < 19); NUMHH=PERSEXP+KIDS; EDCL1=(B3113 IN(1 2)); EDCL2=(B3113=3); EDCL3=(B3113=4); EDCL4=(B3113=5); RWORKS=(B4511 IN(1 2)); SPWORKS=(B4611 IN(1 2)); WHITE=(B3111=1); HISAMP=(B3001=1); HOMOWN=(B3702=1); * output a dataset for STATA; FILE CHARIT83; PUT V1 WGT RAGECL1 RAGECL2 RAGECL3 RAGECL4 RAGECL5 RAGECL6 RSEX MARRIED NUMHH NETWCL1 NETWCL2 NETWCL3 NETWCL4 NETWCL5 NETWCL6 INCCL1 INCCL2 INCCL3 INCCL4 INCCL5 EDCL1 EDCL2 EDCL3 EDCL4 RWORKS SPWORKS WHITE HISAMP HOMOWN; RUN; PROC MEANS DATA=OUT83 N MEAN MIN MAX; FREQ WGT; VAR V1 WGT RAGECL1 RAGECL2 RAGECL3 RAGECL4 RAGECL5 RAGECL6 RSEX MARRIED NUMHH NETWCL1 NETWCL2 NETWCL3 NETWCL4 NETWCL5 NETWCL6 INCCL1 INCCL2 INCCL3 INCCL4 INCCL5 EDCL1 EDCL2 EDCL3 EDCL4 RWORKS SPWORKS WHITE HISAMP HOMOWN; RUN; DATA OUT86; SET SCF86.SCF86B; IF C1354 > 0 THEN TCHARITYAMT=(C1354/3)*.91; ELSE TCHARITYAMT=0; HISAMP=(B3001=1); GCHARITY=(TCHARITYAMT > 0); HHINCOME=C1301*.93; HHINC2=HHINCOME*HHINCOME; INCCL1=(HHINCOME < 10000); INCCL2=(10000 <= HHINCOME < 25000); INCCL3=(25000 <= HHINCOME < 50000); INCCL4=(50000 <= HHINCOME < 100000); INCCL5=(HHINCOME > 100000); NETW=C1457*.91; NETW2=NETW*NETW; NETWCL1=(NETW < 25000); NETWCL2=(25000 <= NETW < 75000); NETWCL3=(75000 <= NETW < 150000); NETWCL4=(150000 <= NETW < 300000); NETWCL5=(300000 <= NETW < 1000000); NETWCL6=(NETW >= 1000000); RAGE=C1604; RAGE2=RAGE*RAGE; RAGECL1=(0 < C1604 < 35); RAGECL2=(35 <= C1604 < 45); RAGECL3=(45 <= C1604 < 55); RAGECL4=(55 <= C1604 < 65); RAGECL5=(65 <= C1604 < 75); RAGECL6=(C1604 >= 75); SPAGECL1=(0 < C1704 < 35); SPAGECL2=(35 <= C1704 < 45); SPAGECL3=(45 <= C1704 < 55); SPAGECL4=(55 <= C1704 < 65); SPAGECL5=(65 <= C1704 < 75); SPAGECL6=(C1604 >= 75); RSEX=(C1605=1); MARRIED=(C1126 IN(1 6)); NUMHH=C1101; WGT=C1014; EDCL1=(C1127 IN(1 2)); EDCL2=(C1127=3); EDCL3=(C1127=4); EDCL4=(C1127=5); RWORKS=(C1638 IN(1 2)); SPWORKS=(C1738 IN(1 2)); WHITE=(B3111=1); HOMOWN=(C1501=1); RUN; * create normalized weight for regressions; PROC MEANS DATA=OUT86; VAR WGT; OUTPUT OUT=WMEAN MEAN=MWGT; RUN; DATA REG86; IF _N_=1 THEN SET WMEAN; SET OUT86; RUN; DATA REG86; SET REG86; NWGT=WGT/MWGT; DROP _TYPE_; RUN; * output a dataset for STATA, not outputing gcharity, will define in STATA; DATA STATA; SET REG86; FILE CHARIT86; PUT WGT NWGT MWGT TCHARITYAMT RAGECL1 RAGECL2 RAGECL3 RAGECL4 RAGECL5 RAGECL6 RSEX MARRIED NUMHH NETWCL1 NETWCL2 NETWCL3 NETWCL4 NETWCL5 NETWCL6 INCCL1 INCCL2 INCCL3 INCCL4 INCCL5 EDCL1 EDCL2 EDCL3 EDCL4 RWORKS SPWORKS WHITE HISAMP HOMOWN; RUN; PROC MEANS DATA=REG86 N MEAN MIN MAX; FREQ WGT; VAR GCHARITY TCHARITYAMT RAGECL1 RAGECL2 RAGECL3 RAGECL4 RAGECL5 RAGECL6 RSEX MARRIED NUMHH NETWCL1 NETWCL2 NETWCL3 NETWCL4 NETWCL5 NETWCL6 INCCL1 INCCL2 INCCL3 INCCL4 INCCL5 EDCL1 EDCL2 EDCL3 EDCL4 RWORKS SPWORKS WHITE HISAMP HOMOWN; RUN; * Run the Stata program the imputes charitable contributions for 1983 based on the 1986 SCF. Note that for most Linux systems, the x command in SAS may only work if the SAS job is run inactively or in batch mode in the foreground.; x 'stata -k500000 do charity86'; * Merging in estimated charitable amounts from Stata program charity86.do, see this program for a description of the procedure to imputed charitable contributions; DATA ECHART83; INFILE ECHART83; INPUT V1 GCHARITY TCHARITYAMT; RUN; PROC SORT DATA=ECHART83; BY V1; RUN; DATA E83; MERGE SCF83.SCF83B ECHART83; BY V1; RUN; DATA T83(KEEP=V1 B3001 WGT PERSEXP KIDS TOTEXPT FILESTAT RAGE SPAGE B3125 B3128 B3703 YEAR STATE MARITST WSINCOME WSINCSP TBUSINC NTAXINC INTINC DIVINC CAPGLINC RENTINC UNEMPINC CHSPALINC AFDCINC OTHINC GSSINC PENINC OTHPINC NONTAX RENT UNADJTOTDEDCT CHCAREXP STAXINC TOTXINC B3125 B3128 HLN1 B4104 QUALOTHPROP QUALOANINV HINVEX CITEMIZE QUALINVPROP AGICL NPEU QUALNPINEXC QUALNPINEXI B4004 B4026 B4454 B4020 HBLN1 HBLN2 HBLN3 B4011 NUMORT B4130 B3804 B3821 B3838 B3809 B3826 B3843 NUMLNI B4331 B4351 B4371 B4391 B4411 B4431 B4002 B4024 B4452 AMTOWEM1 CURBALM1 AINTDCTM1 CINTDCTM1 SINTDCTM1 AVINTDCTM1 TOTDEDCTM HOUSE B3806 B3823 B3840 AMTOWEO1 CURBALO1 AINTDCTO1 CINTDCTO1 AVINTDCTO1 SINTDCTO1 TOTDEDCTO TOTAMTOUTO FMVOPO ADJDEDCT RESTAXM1 TOTINTINC TOTINVPDCT TOTLNINVEX TOTINVEX TOTLOCINVEX CCPINEX TOTLNPINEXC TOTLNPINEXI TOTPINEX TOTITEMDCT ZEROBR AGI TOTEXPT TOTEXPTAMT B3201 TOTDEDCTL AGEXMP TOTAMTOUTM B4125 B5405 TCHARITYAMT GCHARITY CHARITYAMT B3708 B4009 STCAPINC LTCAPINC PAYROLLIAB PAYROLLMTR PAYROLLATR LWP B3112 KIDSU17 FAGI AMTPREFDEDCT AMTNPREFDEDCT); SET E83; * not using AP excluded cases (159); IF B3001^=3; WGT=B3019; * Computing filing status, will also assign head of hh status to Rs who have a qualified dependent. Using TAXSIM codes for filing status, assume all couples living together file joint returns. ; PERSEXP=1+(B3128 IN(2 3)); KIDS=(B3128 IN(4))*(B3130 < 19) + (B3131 IN(4))*(B3133 < 19) + (B3134 IN(4))*(B3136 < 19) + (B3137 IN(4))*(B3139 < 19) + (B3140 IN(4))*(B3142 < 19) + (B3143 IN(4))*(B3145 < 19) + (B3146 IN(4))*(B3148 < 19) + (B3149 IN(4))*(B3151 < 19) + (B3152 IN(4))*(B3154 < 19); * Child tax credit - must be under 17; KIDSU17=(B3128 IN(4))*(B3130 < 17) + (B3131 IN(4))*(B3133 < 17) + (B3134 IN(4))*(B3136 < 17) + (B3137 IN(4))*(B3139 < 17) + (B3140 IN(4))*(B3142 < 17) + (B3143 IN(4))*(B3145 < 17) + (B3146 IN(4))*(B3148 < 17) + (B3149 IN(4))*(B3151 < 17) + (B3152 IN(4))*(B3154 < 17); * In 1983, age and blindness expemtions in with total expemtions, not in the zero bracket amount; TOTEXPT=PERSEXP+KIDS+(B4504 > 65)+(B4604 > 65); FILESTAT=0; * Codes for filestat, cannot use qualified widower code due to lack of date for death of spouse. 0= No return filed 1= Single 2= Married filing jointly 4= Head of HH 5= Qualified widower; IF (PERSEXP=1 & KIDS=0) THEN FILESTAT=1; ELSE IF (PERSEXP=2 & (KIDS=0 | KIDS > 0)) THEN FILESTAT=2; ELSE IF (PERSEXP=1 & KIDS > 0) THEN FILESTAT=4; ELSE IF (FILESTAT=0) THEN PUT "NO FILING STATUS?? " V1= B3125= B3128= B3112= PERSEXP= KIDS= /; * Indicator for R living with a partner; LWP=(B3128=3); RAGE=B4504; SPAGE=B4604; ************Mortgage interest deduction; * Including loan M from consumer loan section, since it is an other housing loan; * Create arrays for various mortgage loan components; ARRAY TLMTH {*} B4007 B4029 B4457; ARRAY CMOPAY {*} CMOPAYM1 CMOPAYM2 CMOPAYM3; ARRAY PAYLFT {*} PAYLFTM1 PAYLFTM2 PAYLFTM3; ARRAY AMTOWE {*} AMTOWEM1 AMTOWEM2 AMTOWEM3; ARRAY AMTOWE_1 {*} AMTOWE_1M1 AMTOWE_1M2 AMTOWE_1M3; ARRAY AINTDCT {*} AINTDCTM1 AINTDCTM2 AINTDCTM3; ARRAY LNAGE {*} LNAGEM1 LNAGEM2 LNAGEM3; ARRAY CURBAL {*} CURBALM1 CURBALM2 CURBALM3; ARRAY CURBAL_1 {*} CURBAL_1M1 CURBAL_1M2 CURBAL_1M3; ARRAY CINTDCT {*} CINTDCTM1 CINTDCTM2 CINTDCTM3; ARRAY DCTDIFF {*} DCTDIFFM1 DCTDIFFM2 DCTDIFFM3; ARRAY SINTDCT {*} SINTDCTM1 SINTDCTM2 SINTDCTM3; ARRAY AVINTDCT {*} AVINTDCTM1 AVINTDCTM2 AVINTDCTM3; ARRAY REGPAYF {*} B4011 B4033 B4460; ARRAY REGPAY {*} B4010 B4032 B4459; ARRAY LNSTMN {*} B4003 B4025 B4453; ARRAY LNSTYR {*} B4004 B4026 B4454; ARRAY BALLN {*} B4014 B4036 B4465; ARRAY HBALLN {*} HBLN1 HBLN2 HBLN3; ARRAY AMTBORR {*} B4009 B4031 B4458; ARRAY AMTOUT {*} B4002 B4024 B4452; ARRAY INTRATE {*} B4015 B4037 B4463; ARRAY HAVELN {*} HLN1 HLN2 HLN3; ARRAY LNDCNT {*} B4008 B4030 LND3; * Initialize some variables; LND3=1; DO I=1 TO DIM(TLMTH); CMOPAY{I}=0; AMTOWE{I}=0; AMTOWE_1{I}=0; AINTDCT{I}=0; PAYLFT{I}=0; LNAGE{I}=0; CURBAL{I}=0; CURBAL_1{I}=0; CINTDCT{I}=0; DCTDIFF{I}=0; SINTDCT{I}=0; AVINTDCT{I}=0; HAVELN{I}=(AMTOUT{I} > 0 & LNDCNT{I}^=2); HBALLN{I}=(BALLN{I} > 0); END; NUMORT=(B4002 > 0)+(B4024 > 0)+(B4452 > 0); TOTDEDCTM=0; TOTAMTOUTM=0; DO I=1 TO DIM(TLMTH); IF (REGPAY{I} > 0) THEN DO; %MOCONV(AMT=REGPAY{I},MOAMT=CMOPAY{I},PER=REGPAYF{I},IML=NO,YEAR8=NO); END; IF (REGPAYF{I} NOT IN(0 8)) THEN DO; PAYLFT{I}=(TLMTH{I}-((1983-LNSTYR{I})*12)); LNAGE{I}=TLMTH{I}-PAYLFT{I}; END; END; * Taxes and insurance already removed from payments in 1983; * First check for balloon payment, and if balloon is equal to amount borrowed, use amount borrowed times the interest rate as interest deduction, as long as this amount is not more than the annualized payment amount. If the balloon is not equal to amount borrowed or the annual payment criteria is not met, compute with non-balloon payment loans. If the term of the loan is coded -9 and there is a positive outstanding balance and interest rate, use that to compute the interest deduction. If the interest rate is equal to -6, then set interest deduction to zero.; * Computing the balance outstanding two ways, one starting from the begining of the loan (CURBAL) and one starting from what is left to be paid (AMTOWE); * NOT INCLUDING LAND CONTRACTS; DO I=1 TO DIM(HAVELN); IF (HAVELN{I}=1 & HBALLN{I}=1 & TLMTH{I} NOT IN(0 -9) & INTRATE{I}^=-6 & AMTBORR{I}=BALLN{I} & (CMOPAY{I}*12 <= AMTBORR{I}*(INTRATE{I}/1000))) THEN DO; SINTDCT{I}=CMOPAY{I}*12; AINTDCT{I}=SINTDCT{I}; CINTDCT{I}=SINTDCT{I}; END; ELSE IF (HAVELN{I}=1 & HBALLN{I} IN(0 1) & TLMTH{I} NOT IN(0 -9) & INTRATE{I}^=-6) THEN DO; IF (TLMTH{I} > 0 & CMOPAY{I} > 0 & PAYLFT{I} > 0) THEN DO; AMTOWE{I}=CMOPAY{I}*((1-1/(1+(INTRATE{I}/1000)/12)**PAYLFT{I})/ ((INTRATE{I}/1000)/12)) +(HBALLN{I}=1)*(BALLN{I}/((1+(INTRATE{I}/1000))**PAYLFT{I})); AMTOWE_1{I}=CMOPAY{I}*((1-1/(1+(INTRATE{I}/1000)/12)**(PAYLFT{I}+12))/ ((INTRATE{I}/1000)/12)) +(HBALLN{I}=1)*(BALLN{I}/((1+(INTRATE{I}/1000))**(PAYLFT{I}+12))); IF LNSTYR{I}^=1983 THEN AINTDCT{I}=(CMOPAY{I}*12)-(AMTOWE_1{I}-AMTOWE{I}); ELSE IF LNSTYR{I}=1983 THEN AINTDCT{I}=AMTOUT{I}*(INTRATE{I}/1000); END; ELSE IF (TLMTH{I} < 0 | CMOPAY{I} < 0 | PAYLFT{I} < 0) THEN DO; AMTOWE{I}=0; AMTOWE_1{I}=0; AINTDCT{I}=0; END; IF (TLMTH{I} > 0 & AMTBORR{I} > 0 & LNAGE{I} > 0) THEN DO; CURBAL{I}=AMTBORR{I}*(((1+(INTRATE{I}/1000)/12)**TLMTH{I})- ((1+(INTRATE{I}/1000)/12)**(LNAGE{I})))/ (((1+(INTRATE{I}/1000)/12)**TLMTH{I})-1); CURBAL_1{I}=AMTBORR{I}*(((1+(INTRATE{I}/1000)/12)**TLMTH{I})- ((1+(INTRATE{I}/1000)/12)**(LNAGE{I}-12)))/ (((1+(INTRATE{I}/1000)/12)**TLMTH{I})-1); CINTDCT{I}=(CMOPAY{I}*12)-(CURBAL_1{I}-CURBAL{I}); END; ELSE IF (TLMTH{I} < 0 | AMTBORR{I} < 0 | LNAGE{I} < 0) THEN DO; CURBAL{I}=0; CURBAL_1{I}=0; CINTDCT{I}=0; END; IF (AMTOUT{I} > 0 & INTRATE{I} > 0) THEN SINTDCT{I}=AMTOUT{I}*(INTRATE{I}/1000); ELSE SINTDCT{I}=0; * Also fixing cases where mortgage ends or starts in the survey year. Setting interest deduction to amount outstanding for year prior to the survey times the interest rate for mortgages ending in the survey year. For cases where mortgage starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTH{I} > 0 & CMOPAY{I} > 0 & PAYLFT{I}=0) THEN DO; CINTDCT{I}=CURBAL_1{I}*(INTRATE{I}/1000); AINTDCT{I}=CINTDCT{I}; END; IF (TLMTH{I} > 0 & CMOPAY{I} > 0 & LNSTYR{I}=1983) THEN DO; CINTDCT{I}=SINTDCT{I}; AINTDCT{I}=SINTDCT{I}; END; * Ad hoc fix for negative interest deductions. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest deduction equals the reported amount outstanding times the interest rate.; IF ((AINTDCT{I} < 0 | CINTDCT{I} < 0) & CURBAL{I} > 0 & CURBAL_1{I} > 0) THEN DO; CINTDCT{I}=CURBAL_1{I}*(INTRATE{I}/1000); AINTDCT{I}=CINTDCT{I}; END; ELSE IF ((AINTDCT{I} < 0 | CINTDCT{I} < 0) & (CURBAL{I} <= 0 & CURBAL_1{I} <= 0)) THEN DO; CINTDCT{I}=SINTDCT{I}; AINTDCT{I}=SINTDCT{I}; END; IF (SINTDCT{I} > 0 & CINTDCT{I} > 0) THEN DCTDIFF{I}=CINTDCT{I}-SINTDCT{I}; ELSE DCTDIFF{I}=0; END; ELSE IF (HAVELN{I}=1 & TLMTH{I}=-9 & AMTOUT{I} > 0 & INTRATE{I} > 0) THEN DO; SINTDCT{I}=AMTOUT{I}*(INTRATE{I}/1000); AINTDCT{I}=SINTDCT{I}; CINTDCT{I}=SINTDCT{I}; END; ELSE IF (HAVELN{I}=1 & (INTRATE{I}=-6)) THEN DO; AINTDCT{I}=0; CINTDCT{I}=0; SINTDCT{I}=0; END; * Averaging across the three measures of interest deduction; IF ((CINTDCT{I} + AINTDCT{I} + SINTDCT{I}) > 0) THEN DO; AVINTDCT{I}=(CINTDCT{I}+AINTDCT{I}+SINTDCT{I})/3; END; ELSE AVINTDCT{I}=0; * Constraining interest deduction amount to be no more than the reported year mortgage payment - using avintdct for comparison. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (HAVELN{I}=1 & AVINTDCT{I} > 0 & CMOPAY{I} > 0 & (AVINTDCT{I} > CMOPAY{I}*12)) THEN DO; AVINTDCT{I}=CMOPAY{I}*12; CINTDCT{I}=AVINTDCT{I}; AINTDCT{I}=AVINTDCT{I}; SINTDCT{I}=AVINTDCT{I}; END; IF (HAVELN{I}=1 & AVINTDCT{I} > 0 & AMTOUT{I} > 0 & (AVINTDCT{I} > .30*AMTOUT{I})) THEN DO; AVINTDCT{I}=AMTOUT{I}*(INTRATE{I}/10000); CINTDCT{I}=AVINTDCT{I}; AINTDCT{I}=AVINTDCT{I}; END; IF (HAVELN{I}=1 & AVINTDCT{I}=0) THEN PUT V1= HAVELN{I}= TLMTH{I}= REGPAYF{I}= REGPAY{I}= CMOPAY{I}= LNSTYR{I}= PAYLFT{I}= LNAGE{I}= AMTOUT{I}= AMTOWE{I}= AMTOWE_1{I}= AINTDCT{I}= CURBAL{I}= CURBAL_1{I}= CINTDCT{I}= AVINTDCT{I}= DCTDIFF{I}= SINTDCT{I}= INTRATE{I}= AMTBORR{I}= HBALLN{I}= BALLN{I}= /; IF (HAVELN{I}=1 & AVINTDCT{I} > .30*AMTOUT{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= HAVELN{I}= TLMTH{I}= REGPAYF{I}= REGPAY{I}= CMOPAY{I}= LNSTYR{I}= PAYLFT{I}= LNAGE{I}= AMTOUT{I}= AMTOWE{I}= AMTOWE_1{I}= AINTDCT{I}= CURBAL{I}= CURBAL_1{I}= CINTDCT{I}= AVINTDCT{I}= DCTDIFF{I}= SINTDCT{I}= INTRATE{I}= AMTBORR{I}= HBALLN{I}= BALLN{I}= /; /* * Dealing with multiple unit homes/buildings here. In 1983, we don't know if R owns the whole building or not, could use B3703 as a guide, may revisit this later.; IF (B3703 > 2) THEN DO; IF (B3703 IN(3 4 7)) THEN TOTDEDCTM=TOTDEDCTM+(AVINTDCT{I}/2)*(HAVELN{I}=1); IF (B3703 IN(5)) THEN TOTDEDCTM=TOTDEDCTM+(AVINTDCT{I}/3)*(HAVELN{I}=1); IF (B3703 IN(8 9)) THEN TOTDEDCTM=TOTDEDCTM+(AVINTDCT{I}/5)*(HAVELN{I}=1); END; ELSE TOTDEDCTM=TOTDEDCTM+AVINTDCT{I}; */ * Total deduction amount; TOTDEDCTM=TOTDEDCTM+AVINTDCT{I}; * Total amount outstanding on loans; TOTAMTOUTM=TOTAMTOUTM+AMTOUT{I}; END; * In 1983, all interest from any type of LOC is deductible, but for comparison purposes, what to differentiate between HELOCs and LOCs. Since interest rate information was not collected, assuming an 18% interest rate (since the prime rate was 14.85% in 1982, and a 30 yr fixed mortgage had a 16% interest rate); TOTDEDCTL=MAX(0,((B4125*.18)*(B4130=1))); * Using code similar to that used in mortgage grid, but also need to know what type of property and if there is income from the property.; * Create arrays for various other property loan components; ARRAY TLMTHO {*} B3812 B3829 B3846; ARRAY CMOPAYO {*} CMOPAYO1 CMOPAYO2 CMOPAYO3; ARRAY PAYLFTO {*} PAYLFTO1 PAYLFTO2 PAYLFTO3; ARRAY AMTOWEO {*} AMTOWEO1 AMTOWEO2 AMTOWEO3; ARRAY AMTOWE_1O {*} AMTOWE_1O1 AMTOWE_1O2 AMTOWE_1O3; ARRAY AINTDCTO {*} AINTDCTO1 AINTDCTO2 AINTDCTO3; ARRAY LNAGEO {*} LNAGEO1 LNAGEO2 LNAGEO3; ARRAY CURBALO {*} CURBALO1 CURBALO2 CURBALO3; ARRAY CURBAL_1O {*} CURBAL_1O1 CURBAL_1O2 CURBAL_1O3; ARRAY CINTDCTO {*} CINTDCTO1 CINTDCTO2 CINTDCTO3; ARRAY DCTDIFFO {*} DCTDIFFO1 DCTDIFFO2 DCTDIFFO3; ARRAY SINTDCTO {*} SINTDCTO1 SINTDCTO2 SINTDCTO3; ARRAY AVINTDCTO {*} AVINTDCTO1 AVINTDCTO2 AVINTDCTO3; ARRAY QUALPROP {*} QPROP1 QPROP2 QPROP3; ARRAY QUALPINV {*} QPINV1 QPINV2 QPINV3; ARRAY REGPAYFO {*} B3815 B3832 B3849; ARRAY REGPAYO {*} B3814 B3831 B3848; ARRAY LNSTMNO {*} B3808 B3825 B3842; ARRAY LNSTYRO {*} B3809 B3826 B3843; ARRAY HBALLNO {*} HBLNO1 HBLNO2 HBLNO3; ARRAY BALLNO {*} B3818 B3835 B3852; ARRAY AMTBORRO {*} B3813 B3830 B3847; ARRAY AMTOUTO {*} B3806 B3823 B3840; ARRAY HAVELNO {*} HLNO1 HLNO2 HLNO3; ARRAY INTRATEO {*} B3819 B3836 B3853; ARRAY PROPTYPE {*} B3804 B3821 B3838; ARRAY PROPVAL {*} B3805 B3822 B3839; * Initialize some variables; DO I=1 TO DIM(TLMTHO); CMOPAYO{I}=0; PAYLFTO{I}=0; AMTOWEO{I}=0; AMTOWE_1O{I}=0; AINTDCTO{I}=0; LNAGEO{I}=0; CURBALO{I}=0; CURBAL_1O{I}=0; CINTDCTO{I}=0; DCTDIFFO{I}=0; SINTDCTO{I}=0; AVINTDCTO{I}=0; QUALPROP{I}=0; QUALPINV{I}=0; HBALLNO{I}=(BALLNO{I} > 0); HAVELNO{I}=(AMTOUTO{I} > 0); END; TOTAMTOUTO=0; TOTDEDCTO=0; QUALOTHPROP=0; QUALINVPROP=0; TOTINVPDCT=0; FMVOPO=0; DO I=1 TO DIM(TLMTHO); IF (REGPAYO{I} > 0) THEN DO; %MOCONV(AMT=REGPAYO{I},MOAMT=CMOPAYO{I},PER=REGPAYFO{I},IML=NO,YEAR8=NO); END; IF (REGPAYFO{I} NOT IN(0 8)) THEN DO; PAYLFTO{I}=(TLMTHO{I}-((1983-LNSTYRO{I})*12)); LNAGEO{I}=TLMTHO{I}-PAYLFTO{I}; END; END; * Taxes and insurance already removed from payments in 1983; * First check for balloon payment, and if balloon is equal to amount borrowed, use amount borrowed times the interest rate as interest deduction, as long as this amount is not more than the annualized payment amount. If the balloon is not equal to amount borrowed or the annual payment criteria is not met, compute with non-balloon payment loans. If the term of the loan is coded -9 and there is a positive outstanding balance and interest rate, use that to compute the interest deduction. If the interest rate is equal to -6, then set interest deduction to zero.; * Computing the balance outstanding two ways, one starting from the begining of the loan (CURBAL) and one starting from what is left to be paid (AMTOWE); DO I=1 TO DIM(HAVELNO); IF (PROPTYPE{I} IN(12 13 14 21 22 24 25 30 35)) THEN DO; * indicator and counter of qualified properties; QUALPROP{I}=(HAVELNO{I}=1); QUALOTHPROP=QUALOTHPROP+QUALPROP{I}; FMVOPO=FMVOPO+PROPVAL{I}*(HAVELNO{I}=1); IF (HAVELNO{I}=1 & HBALLNO{I}=1 & TLMTHO{I} NOT IN(0 -9) & INTRATEO{I}^=-6 & AMTBORRO{I}=BALLNO{I} & (CMOPAYO{I}*12 <= AMTBORRO{I}*(INTRATEO{I}/1000))) THEN DO; SINTDCTO{I}=CMOPAYO{I}*12; AINTDCTO{I}=SINTDCTO{I}; CINTDCTO{I}=SINTDCTO{I}; END; ELSE IF (HAVELNO{I}=1 & HBALLNO{I} IN(0 1) & TLMTHO{I} NOT IN(0 -9) & INTRATEO{I}^=-6) THEN DO; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & PAYLFTO{I} > 0) THEN DO; AMTOWEO{I}=CMOPAYO{I}*((1-1/(1+(INTRATEO{I}/1000)/12)**PAYLFTO{I})/ ((INTRATEO{I}/1000)/12)) +(HBALLNO{I}=1)*(BALLNO{I}/((1+(INTRATEO{I}/1000))**PAYLFTO{I})); AMTOWE_1O{I}=CMOPAYO{I}*((1-1/(1+(INTRATEO{I}/1000)/12)**(PAYLFTO{I}+12))/ ((INTRATEO{I}/1000)/12)) +(HBALLNO{I}=1)*(BALLNO{I}/((1+(INTRATEO{I}/1000))**(PAYLFTO{I}+12))); IF LNSTYRO{I}^=1983 THEN AINTDCTO{I}=(CMOPAYO{I}*12)-(AMTOWE_1O{I}-AMTOWEO{I}); ELSE IF LNSTYRO{I}=1983 THEN AINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); END; ELSE IF (TLMTHO{I} < 0 | CMOPAYO{I} < 0 | PAYLFTO{I} < 0) THEN DO; AMTOWEO{I}=0; AMTOWE_1O{I}=0; AINTDCTO{I}=0; END; IF (TLMTHO{I} > 0 & AMTBORRO{I} > 0 & LNAGEO{I} > 0) THEN DO; CURBALO{I}=AMTBORRO{I}*(((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})- ((1+(INTRATEO{I}/1000)/12)**(LNAGEO{I})))/ (((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})-1); CURBAL_1O{I}=AMTBORRO{I}*(((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})- ((1+(INTRATEO{I}/1000)/12)**(LNAGEO{I}-12)))/ (((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})-1); CINTDCTO{I}=(CMOPAYO{I}*12)-(CURBAL_1O{I}-CURBALO{I}); END; ELSE IF (TLMTHO{I} < 0 | AMTBORRO{I} < 0 | LNAGEO{I} < 0) THEN DO; CURBALO{I}=0; CURBAL_1O{I}=0; CINTDCTO{I}=0; END; IF (AMTOUTO{I} > 0 & INTRATEO{I} > 0) THEN SINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); ELSE SINTDCTO{I}=0; * Also fixing cases where mortgage ends or starts in the survey year. Setting interest deduction to amount outstanding for year prior to the survey times the interest rate for mortgages ending in the survey year. For cases where mortgage starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & PAYLFTO{I}=0) THEN DO; CINTDCTO{I}=CURBAL_1O{I}*(INTRATEO{I}/1000); AINTDCTO{I}=CINTDCTO{I}; END; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & LNSTYRO{I}=1983) THEN DO; CINTDCTO{I}=SINTDCTO{I}; AINTDCTO{I}=SINTDCTO{I}; END; * Ad hoc fix for negative interest deductions. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest deduction equals the reported amount outstanding times the interest rate.; IF ((AINTDCTO{I} < 0 | CINTDCTO{I} < 0) & CURBALO{I} > 0 & CURBAL_1O{I} > 0) THEN DO; CINTDCTO{I}=CURBAL_1O{I}*(INTRATEO{I}/1000); AINTDCTO{I}=CINTDCTO{I}; END; ELSE IF ((AINTDCTO{I} < 0 | CINTDCTO{I} < 0) & (CURBALO{I} <= 0 & CURBAL_1O{I} <= 0)) THEN DO; CINTDCTO{I}=SINTDCTO{I}; AINTDCTO{I}=SINTDCTO{I}; END; IF (SINTDCTO{I} > 0 & CINTDCTO{I} > 0) THEN DCTDIFFO{I}=CINTDCTO{I}-SINTDCTO{I}; ELSE DCTDIFFO{I}=0; END; ELSE IF (HAVELNO{I}=1 & TLMTHO{I}=-9 & AMTOUTO{I} > 0 & INTRATEO{I} > 0) THEN DO; SINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); AINTDCTO{I}=SINTDCTO{I}; CINTDCTO{I}=SINTDCTO{I}; END; ELSE IF (HAVELNO{I}=1 & (INTRATEO{I}=-6)) THEN DO; AINTDCTO{I}=0; CINTDCTO{I}=0; SINTDCTO{I}=0; END; * Averaging across the three measures of interest deduction; IF ((CINTDCTO{I} + AINTDCTO{I} + SINTDCTO{I}) > 0) THEN DO; AVINTDCTO{I}=(CINTDCTO{I}+AINTDCTO{I}+SINTDCTO{I})/3; END; ELSE AVINTDCTO{I}=0; * Constraining interest deduction amount to be no more than the reported year mortgage payment - using avintdedct as prefered interest deduction measure. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (HAVELNO{I}=1 & AVINTDCTO{I} > 0 & CMOPAYO{I} > 0 & (AVINTDCTO{I} > CMOPAYO{I}*12)) THEN DO; AVINTDCTO{I}=CMOPAYO{I}*12; CINTDCTO{I}=AVINTDCTO{I}; AINTDCTO{I}=AVINTDCTO{I}; SINTDCTO{I}=AVINTDCTO{I}; END; IF (HAVELNO{I}=1 & AVINTDCTO{I} > 0 & AMTOUTO{I} > 0 & (AVINTDCTO{I} > .30*AMTOUTO{I})) THEN DO; AVINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/10000); CINTDCTO{I}=AVINTDCTO{I}; AINTDCTO{I}=AVINTDCTO{I}; END; IF (HAVELNO{I}=1 & AVINTDCTO{I}=0) THEN PUT V1= HAVELNO{I}= TLMTHO{I}= REGPAYFO{I}= REGPAYO{I}= CMOPAYO{I}= LNSTYRO{I}= PAYLFTO{I}= LNAGEO{I}= AMTOUTO{I}= AMTOWEO{I}= AMTOWE_1O{I}= AINTDCTO{I}= CURBALO{I}= CURBAL_1O{I}= CINTDCTO{I}= DCTDIFFO{I}= SINTDCTO{I}= AVINTDCTO{I}= INTRATEO{I}= AMTBORRO{I}= HBALLNO{I}= BALLNO{I}= PROPTYPE{I}= /; IF (HAVELNO{I}=1 & AVINTDCTO{I} > .30*AMTOUTO{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= HAVELNO{I}= TLMTHO{I}= REGPAYFO{I}= REGPAYO{I}= CMOPAYO{I}= LNSTYRO{I}= PAYLFTO{I}= LNAGEO{I}= AMTOUTO{I}= AMTOWEO{I}= AMTOWE_1O{I}= AINTDCTO{I}= CURBALO{I}= CURBAL_1O{I}= CINTDCTO{I}= DCTDIFFO{I}= SINTDCTO{I}= AVINTDCTO{I}= INTRATEO{I}= AMTBORRO{I}= HBALLNO{I}= BALLNO{I}= PROPTYPE{I}= /; * Compute total deduction and total amount outstanding; TOTDEDCTO=TOTDEDCTO+(AVINTDCTO{I})*(HAVELNO{I}=1); TOTAMTOUTO=TOTAMTOUTO+AMTOUTO{I}; END; END; * No limits to amount of mortgage deduction in 1982, so total mortgage interest deduction in just mortgages plus HELOCs; ADJDEDCT=TOTDEDCTM+TOTDEDCTL+TOTDEDCTO; IF ADJDEDCT >= 100000 THEN PUT "HUGE MORTGAGE INTEREST DEDUCTION " V1= TOTDEDCTM= TOTAMTOUTM= TOTDEDCTL= TOTDEDCTO= TOTAMTOUTO= B3708= ADJDEDCT= B3201=/; ************Real estate taxes; * TAXSIM doesn't want local property taxes in amount of itemized deductions, listed as a separate variable; * Assuming 1.4 percent property tax on primary residence, since property tax information not collected in 1983. 1.4 percent value is the average for the 89, 92, 95, and 98 SCFs.; RESTAXM1=MAX(0,(B3708*.014)); HOUSE=B3708; ************Investment interest expense; * Calculating deductible interest expenses. Investment expenses (in the SCF data) consists of interest paid on loans for investments, we have no information on other investment expenses. Investment interest expense is limited in 1982 to net investment income plus 10,000 (5,000 if married filing separately). There are also some addition rules for interest from a loan used to purchase stock in a company the taxpayer owns a majority interest in, but we don't have enough information to apply this rule.; * In 1983, all interest from any type of LOC is deductible, but for comparison purposes, what to differentiate between HELOCs and LOCs. Since interest rate information was not collected, assuming an 18% interest rate (since the prime rate was 14.85% in 1982, and a 30 yr fixed mortgage had a 16% interest rate); TOTLOCINVEX=MAX(0,((B4125*.18)*(B4130=5))); * Other properties - only counting properties held for investment purposes, and hh must receive income from the property.; DO I=1 TO DIM(HAVELNO); IF (PROPTYPE{I} IN(31 32 33 34 97)) THEN DO; * indicator and counter of qualified properties; QUALPINV{I}=(HAVELNO{I}=1); QUALINVPROP=QUALINVPROP+QUALPINV{I}; IF (HAVELNO{I}=1 & HBALLNO{I}=1 & TLMTHO{I} NOT IN(0 -9) & INTRATEO{I}^=-6 & AMTBORRO{I}=BALLNO{I} & (CMOPAYO{I}*12 <= AMTBORRO{I}*(INTRATEO{I}/1000))) THEN DO; SINTDCTO{I}=CMOPAYO{I}*12; AINTDCTO{I}=SINTDCTO{I}; CINTDCTO{I}=SINTDCTO{I}; END; ELSE IF (HAVELNO{I}=1 & HBALLNO{I} IN(0 1) & TLMTHO{I} NOT IN(0 -9) & INTRATEO{I}^=-6) THEN DO; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & PAYLFTO{I} > 0) THEN DO; AMTOWEO{I}=CMOPAYO{I}*((1-1/(1+(INTRATEO{I}/1000)/12)**PAYLFTO{I})/ ((INTRATEO{I}/1000)/12)) +(HBALLNO{I}=1)*(BALLNO{I}/((1+(INTRATEO{I}/1000))**PAYLFTO{I})); AMTOWE_1O{I}=CMOPAYO{I}*((1-1/(1+(INTRATEO{I}/1000)/12)**(PAYLFTO{I}+12))/ ((INTRATEO{I}/1000)/12)) +(HBALLNO{I}=1)*(BALLNO{I}/((1+(INTRATEO{I}/1000))**(PAYLFTO{I}+12))); IF LNSTYRO{I}^=1983 THEN AINTDCTO{I}=(CMOPAYO{I}*12)-(AMTOWE_1O{I}-AMTOWEO{I}); ELSE IF LNSTYRO{I}=1983 THEN AINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); END; ELSE IF (TLMTHO{I} < 0 | CMOPAYO{I} < 0 | PAYLFTO{I} < 0) THEN DO; AMTOWEO{I}=0; AMTOWE_1O{I}=0; AINTDCTO{I}=0; END; IF (TLMTHO{I} > 0 & AMTBORRO{I} > 0 & LNAGEO{I} > 0) THEN DO; CURBALO{I}=AMTBORRO{I}*(((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})- ((1+(INTRATEO{I}/1000)/12)**(LNAGEO{I})))/ (((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})-1); CURBAL_1O{I}=AMTBORRO{I}*(((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})- ((1+(INTRATEO{I}/1000)/12)**(LNAGEO{I}-12)))/ (((1+(INTRATEO{I}/1000)/12)**TLMTHO{I})-1); CINTDCTO{I}=(CMOPAYO{I}*12)-(CURBAL_1O{I}-CURBALO{I}); END; ELSE IF (TLMTHO{I} < 0 | AMTBORRO{I} < 0 | LNAGEO{I} < 0) THEN DO; CURBALO{I}=0; CURBAL_1O{I}=0; CINTDCTO{I}=0; END; IF (AMTOUTO{I} > 0 & INTRATEO{I} > 0) THEN SINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); ELSE SINTDCTO{I}=0; * Also fixing cases where mortgage ends or starts in the survey year. Setting interest deduction to amount outstanding for year prior to the survey times the interest rate for mortgages ending in the survey year. For cases where mortgage starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & PAYLFTO{I}=0) THEN DO; CINTDCTO{I}=CURBAL_1O{I}*(INTRATEO{I}/1000); AINTDCTO{I}=CINTDCTO{I}; END; IF (TLMTHO{I} > 0 & CMOPAYO{I} > 0 & LNSTYRO{I}=1983) THEN DO; CINTDCTO{I}=SINTDCTO{I}; AINTDCTO{I}=SINTDCTO{I}; END; * Ad hoc fix for negative interest deductions. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest deduction equals the reported amount outstanding times the interest rate.; IF ((AINTDCTO{I} < 0 | CINTDCTO{I} < 0) & CURBALO{I} > 0 & CURBAL_1O{I} > 0) THEN DO; CINTDCTO{I}=CURBAL_1O{I}*(INTRATEO{I}/1000); AINTDCTO{I}=CINTDCTO{I}; END; ELSE IF ((AINTDCTO{I} < 0 | CINTDCTO{I} < 0) & (CURBALO{I} <= 0 & CURBAL_1O{I} <= 0)) THEN DO; CINTDCTO{I}=SINTDCTO{I}; AINTDCTO{I}=SINTDCTO{I}; END; IF (SINTDCTO{I} > 0 & CINTDCTO{I} > 0) THEN DCTDIFFO{I}=CINTDCTO{I}-SINTDCTO{I}; ELSE DCTDIFFO{I}=0; END; ELSE IF (HAVELNO{I}=1 & TLMTHO{I}=-9 & AMTOUTO{I} > 0 & INTRATEO{I} > 0) THEN DO; SINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/1000); AINTDCTO{I}=SINTDCTO{I}; CINTDCTO{I}=SINTDCTO{I}; END; ELSE IF (HAVELNO{I}=1 & (INTRATEO{I}=-6)) THEN DO; AINTDCTO{I}=0; CINTDCTO{I}=0; SINTDCTO{I}=0; END; * Averaging across the three measures of interest deduction; IF ((CINTDCTO{I} + AINTDCTO{I} + SINTDCTO{I}) > 0) THEN DO; AVINTDCTO{I}=(CINTDCTO{I}+AINTDCTO{I}+SINTDCTO{I})/3; END; ELSE AVINTDCTO{I}=0; * Constraining interest deduction amount to be no more than the reported year mortgage payment - using avintdedct as prefered interest deduction measure. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (HAVELNO{I}=1 & AVINTDCTO{I} > 0 & CMOPAYO{I} > 0 & (AVINTDCTO{I} > CMOPAYO{I}*12)) THEN DO; AVINTDCTO{I}=CMOPAYO{I}*12; CINTDCTO{I}=AVINTDCTO{I}; AINTDCTO{I}=AVINTDCTO{I}; SINTDCTO{I}=AVINTDCTO{I}; END; IF (HAVELNO{I}=1 & AVINTDCTO{I} > 0 & AMTOUTO{I} > 0 & (AVINTDCTO{I} > .30*AMTOUTO{I})) THEN DO; AVINTDCTO{I}=AMTOUTO{I}*(INTRATEO{I}/10000); CINTDCTO{I}=AVINTDCTO{I}; AINTDCTO{I}=AVINTDCTO{I}; END; IF (HAVELNO{I}=1 & AVINTDCTO{I}=0) THEN PUT V1= HAVELNO{I}= TLMTHO{I}= REGPAYFO{I}= REGPAYO{I}= CMOPAYO{I}= LNSTYRO{I}= PAYLFTO{I}= LNAGEO{I}= AMTOUTO{I}= AMTOWEO{I}= AMTOWE_1O{I}= AINTDCTO{I}= CURBALO{I}= CURBAL_1O{I}= CINTDCTO{I}= DCTDIFFO{I}= SINTDCTO{I}= AVINTDCTO{I}= INTRATEO{I}= AMTBORRO{I}= HBALLNO{I}= BALLNO{I}= PROPTYPE{I}= /; IF (HAVELNO{I}=1 & AVINTDCTO{I} > .30*AMTOUTO{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= HAVELNO{I}= TLMTHO{I}= REGPAYFO{I}= REGPAYO{I}= CMOPAYO{I}= LNSTYRO{I}= PAYLFTO{I}= LNAGEO{I}= AMTOUTO{I}= AMTOWEO{I}= AMTOWE_1O{I}= AINTDCTO{I}= CURBALO{I}= CURBAL_1O{I}= CINTDCTO{I}= DCTDIFFO{I}= SINTDCTO{I}= AVINTDCTO{I}= INTRATEO{I}= AMTBORRO{I}= HBALLNO{I}= BALLNO{I}= PROPTYPE{I}= /; * Compute total investment interest expense; TOTINVPDCT=TOTINVPDCT+(AVINTDCTO{I})*(HAVELNO{I}=1); END; END; * Other loans - only counting loans for (non-business) investment purposes; ARRAY TLMTHI {*} B4337 B4357 B4377 B4397 B4417 B4437; ARRAY CMOPAYI {*} CMOPAYI1 CMOPAYI2 CMOPAYI3 CMOPAYI4 CMOPAYI5 CMOPAYI6; ARRAY PAYLFTI {*} PAYLFTI1 PAYLFTI2 PAYLFTI3 PAYLFTI4 PAYLFTI5 PAYLFTI6; ARRAY AMTOWEI {*} AMTOWEI1 AMTOWEI2 AMTOWEI3 AMTOWEI4 AMTOWEI5 AMTOWEI6; ARRAY AMTOWE_1I {*} AMTOWE_1I1 AMTOWE_1I2 AMTOWE_1I3 AMTOWE_1I4 AMTOWE_1I5 AMTOWE_1I6; ARRAY AINTEXPI {*} AINTEXPI1 AINTEXPI2 AINTEXPI3 AINTEXPI4 AINTEXPI5 AINTEXPI6; ARRAY LNAGEI {*} LNAGEI1 LNAGEI2 LNAGEI3 LNAGEI4 LNAGEI5 LNAGEI6; ARRAY CURBALI {*} CURBALI1 CURBALI2 CURBALI3 CURBALI4 CURBALI5 CURBALI6; ARRAY CURBAL_1I {*} CURBAL_1I1 CURBAL_1I2 CURBAL_1I3 CURBAL_1I4 CURBAL_1I5 CURBAL_1I6; ARRAY CINTEXPI {*} CINTEXPI1 CINTEXPI2 CINTEXPI3 CINTEXPI4 CINTEXPI5 CINTEXPI6; ARRAY DCTDIFFI {*} DCTDIFFI1 DCTDIFFI2 DCTDIFFI3 DCTDIFFI4 DCTDIFFI5 DCTDIFFI6; ARRAY SINTEXPI {*} SINTEXPI1 SINTEXPI2 SINTEXPI3 SINTEXPI4 SINTEXPI5 SINTEXPI6; ARRAY AVINTEXPI {*} AVINTEXPI1 AVINTEXPI2 AVINTEXPI3 AVINTEXPI4 AVINTEXPI5 AVINTEXPI6; ARRAY QUALN {*} QLN1 QLN2 QLN3 QLN4 QLN5 QLN6; ARRAY REGPAYFI {*} B4340 B4360 B4380 B4400 B4420 B4440; ARRAY REGPAYI {*} B4339 B4359 B4379 B4399 B4419 B4439; ARRAY LNSTYRI {*} B4334 B4354 B4374 B4394 B4414 B4434; ARRAY AMTBORRI {*} B4338 B4358 B4378 B4398 B4418 B4438; ARRAY AMTOUTI {*} B4332 B4352 B4372 B4392 B4412 B4432; ARRAY INTRATEI {*} B4343 B4363 B4383 B4403 B4423 B4443; ARRAY LNTYPEI {*} B4331 B4351 B4371 B4391 B4411 B4431; ARRAY HAVELNI {*} HLNI1 HLNI2 HLNI3 HLNI4 HLNI5 HLNI6; * Initialize some variables; DO I=1 TO DIM(TLMTHI); CMOPAYI{I}=0; PAYLFTI{I}=0; AMTOWEI{I}=0; AMTOWE_1I{I}=0; AINTEXPI{I}=0; LNAGEI{I}=0; CURBALI{I}=0; CURBAL_1I{I}=0; CINTEXPI{I}=0; DCTDIFFI{I}=0; SINTEXPI{I}=0; AVINTEXPI{I}=0; QUALN{I}=0; HAVELNI{I}=(AMTOUTI{I} > 0); END; TOTLNINVEX=0; QUALOANINV=0; NUMLNI=(B4332 > 0)+(B4352 > 0)+(B4372 > 0)+(B4392 > 0)+(B4412 > 0)+(B4432 > 0); DO I=1 TO DIM(TLMTHI); IF (REGPAYI{I} > 0) THEN DO; %MOCONV(AMT=REGPAYI{I},MOAMT=CMOPAYI{I},PER=REGPAYFI{I},IML=NO,YEAR8=NO); END; IF (REGPAYFI{I} NOT IN(0 8)) THEN DO; PAYLFTI{I}=(TLMTHI{I}-((1983-LNSTYRI{I})*12)); LNAGEI{I}=TLMTHI{I}-PAYLFTI{I}; END; END; DO I=1 TO DIM(HAVELNI); IF (HAVELNI{I}=1 & LNTYPEI{I} IN(72 79)) THEN DO; * indicator and counter of qualified loans; QUALN{I}=1; QUALOANINV=QUALOANINV+QUALN{I}; IF (TLMTHI{I} NOT IN(0 -9) & INTRATEI{I}^=-6) THEN DO; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & PAYLFTI{I} > 0) THEN DO; AMTOWEI{I}=CMOPAYI{I}*((1-1/(1+(INTRATEI{I}/1000)/12)**PAYLFTI{I})/ ((INTRATEI{I}/1000)/12)); AMTOWE_1I{I}=CMOPAYI{I}*((1-1/(1+(INTRATEI{I}/1000)/12)**(PAYLFTI{I}+12))/ ((INTRATEI{I}/1000)/12)); IF LNSTYRI{I}^=1983 THEN AINTEXPI{I}=(CMOPAYI{I}*12)-(AMTOWE_1I{I}-AMTOWEI{I}); ELSE IF LNSTYRI{I}=1983 THEN AINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); END; ELSE IF (TLMTHI{I} < 0 | CMOPAYI{I} < 0 | PAYLFTI{I} < 0) THEN DO; AMTOWEI{I}=0; AMTOWE_1I{I}=0; AINTEXPI{I}=0; END; IF (TLMTHI{I} > 0 & AMTBORRI{I} > 0 & LNAGEI{I} > 0) THEN DO; CURBALI{I}=AMTBORRI{I}*(((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})- ((1+(INTRATEI{I}/1000)/12)**(LNAGEI{I})))/ (((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})-1); CURBAL_1I{I}=AMTBORRI{I}*(((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})- ((1+(INTRATEI{I}/1000)/12)**(LNAGEI{I}-12)))/ (((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})-1); CINTEXPI{I}=(CMOPAYI{I}*12)-(CURBAL_1I{I}-CURBALI{I}); END; ELSE IF (TLMTHI{I} < 0 | AMTBORRI{I} < 0 | LNAGEI{I} < 0) THEN DO; CURBALI{I}=0; CURBAL_1I{I}=0; CINTEXPI{I}=0; END; IF (AMTOUTI{I} > 0 & INTRATEI{I} > 0) THEN SINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); ELSE SINTEXPI{I}=0; * Also fixing cases where loan ends or starts in the survey year. Setting interest expense to amount outstanding for year prior to the survey times the interest rate for loans ending in the survey year. For cases where the loan starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & PAYLFTI{I}=0) THEN DO; CINTEXPI{I}=CURBAL_1I{I}*(INTRATEI{I}/1000); AINTEXPI{I}=CINTEXPI{I}; END; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & LNSTYRI{I}=1983) THEN DO; CINTEXPI{I}=SINTEXPI{I}; AINTEXPI{I}=SINTEXPI{I}; END; * Ad hoc fix for negative interest expenses. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest expense equals the reported amount outstanding times the interest rate.; IF ((AINTEXPI{I} < 0 | CINTEXPI{I} < 0) & CURBALI{I} > 0 & CURBAL_1I{I} > 0) THEN DO; CINTEXPI{I}=CURBAL_1I{I}*(INTRATEI{I}/1000); AINTEXPI{I}=CINTEXPI{I}; END; ELSE IF ((AINTEXPI{I} < 0 | CINTEXPI{I} < 0) & (CURBALI{I} <= 0 & CURBAL_1I{I} <= 0)) THEN DO; CINTEXPI{I}=SINTEXPI{I}; AINTEXPI{I}=SINTEXPI{I}; END; IF (SINTEXPI{I} > 0 & CINTEXPI{I} > 0) THEN DCTDIFFI{I}=CINTEXPI{I}-SINTEXPI{I}; ELSE DCTDIFFI{I}=0; END; ELSE IF (TLMTHI{I}=-9 & AMTOUTI{I} > 0 & INTRATEI{I} > 0) THEN DO; SINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); AINTEXPI{I}=SINTEXPI{I}; CINTEXPI{I}=SINTEXPI{I}; END; ELSE IF (INTRATEI{I}=-6) THEN DO; AINTEXPI{I}=0; CINTEXPI{I}=0; SINTEXPI{I}=0; END; * Averaging across the three measures of interest expense; IF ((CINTEXPI{I} + AINTEXPI{I} + SINTEXPI{I}) > 0) THEN DO; AVINTEXPI{I}=(CINTEXPI{I}+AINTEXPI{I}+SINTEXPI{I})/3; END; ELSE AVINTEXPI{I}=0; * Constraining interest expense amount to be no more than the reported year loan payment - using avintdedct as prefered interest expense measure. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (AVINTEXPI{I} > 0 & CMOPAYI{I} > 0 & (AVINTEXPI{I} > CMOPAYI{I}*12)) THEN DO; AVINTEXPI{I}=CMOPAYI{I}*12; CINTEXPI{I}=AVINTEXPI{I}; AINTEXPI{I}=AVINTEXPI{I}; SINTEXPI{I}=AVINTEXPI{I}; END; IF (AVINTEXPI{I} > 0 & AMTOUTI{I} > 0 & (AVINTEXPI{I} > .30*AMTOUTI{I})) THEN DO; AVINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/10000); CINTEXPI{I}=AVINTEXPI{I}; AINTEXPI{I}=AVINTEXPI{I}; END; IF (AVINTEXPI{I}=0) THEN PUT V1= TLMTHI{I}= REGPAYFI{I}= REGPAYI{I}= CMOPAYI{I}= LNSTYRI{I}= PAYLFTI{I}= LNAGEI{I}= AMTOUTI{I}= AMTOWEI{I}= AMTOWE_1I{I}= AINTEXPI{I}= CURBALI{I}= CURBAL_1I{I}= CINTEXPI{I}= DCTDIFFI{I}= SINTEXPI{I}= AVINTEXPI{I}= INTRATEI{I}= AMTBORRI{I}= LNTYPEI{I}= NUMLNI=/; IF (AVINTEXPI{I} > .30*AMTOUTI{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= TLMTHI{I}= REGPAYFI{I}= REGPAYI{I}= CMOPAYI{I}= LNSTYRI{I}= PAYLFTI{I}= LNAGEI{I}= AMTOUTI{I}= AMTOWEI{I}= AMTOWE_1I{I}= AINTEXPI{I}= CURBALI{I}= CURBAL_1I{I}= CINTEXPI{I}= DCTDIFFI{I}= SINTEXPI{I}= AVINTEXPI{I}= INTRATEI{I}= AMTBORRI{I}= LNTYPEI{I}= NUMLNI=/; * Compute loan investment interest expense; TOTLNINVEX=TOTLNINVEX+AVINTEXPI{I}; END; END; * Total investment interest expense, limited to interest income plus $10,000; TOTINTINC=B3208+B3209; TOTINVEX=0; TOTINVEX=TOTLOCINVEX+TOTINVPDCT+TOTLNINVEX; IF TOTINVEX > 0 THEN HINVEX=1; ELSE HINVEX=0; IF (TOTINVEX > (TOTINTINC+10000)) THEN PUT "TOO MUCH INVESTMENT INTEREST EXPENSES " V1= TOTINVEX= TOTLOCINVEX= TOTINVPDCT= TOTLNINVEX= TOTINTINC=/; IF (TOTINVEX > (TOTINTINC+10000)) THEN TOTINVEX=(TOTINTINC+10000); *************Personal interest deduction; * In 1982, all personal interest is deductible, this includes credit cards, car/other vehicle loans, other consumer loans, loans against life insurance policies, home improvement loans, and non-HELOC LOCs (for 1982, non-HELOC LOCs in with investment interest expense).; * Credit cards - Have interest rates for hhs with bank or store cards, and will assume 18.5% rate for hhs with a balance who don't have bank or store cards. If hh almost always pays balance, then deduction is balance still owed on all cards multiplied by IR/12. For sometimes pays balance, deduction is balance still owed multiplied by IR/6, for hardly ever pays balance, deduction is balance still owed multiplied by IR; * 18.5% interest rate taken from June 1983 Federal Reserve Bulletin; TOTCCBAL=MAX(0,(B4107+B4110+B4113+B4116+B4119+B4122)); CCIR=0; IF (TOTCCBAL > 0 & B4124 > 0) THEN CCIR=B4124/1000; ELSE IF (TOTCCBAL > 0 & B4124 IN(0 -8 -9)) THEN CCIR=.185; CCPINEX=0; IF (B4103=1 & TOTCCBAL > 0) THEN DO; IF (B4123=1) THEN CCPINEX=TOTCCBAL*(CCIR/12); ELSE IF (B4123=3) THEN CCPINEX=TOTCCBAL*(CCIR/6); ELSE IF (B4123 IN(5 -8 -9)) THEN CCPINEX=TOTCCBAL*(CCIR); END; * Car/other vehicle and home improvement loans, using code similar to other loan investment interest deduction computations; ARRAY TLMTHC {*} B4217 B4237 B4257 B4277 B4297 B4317; ARRAY CMOPAYC {*} CMOPAYC1 CMOPAYC2 CMOPAYC3 CMOPAYC4 CMOPAYC5 CMOPAYC6 ; ARRAY PAYLFTC {*} PAYLFTC1 PAYLFTC2 PAYLFTC3 PAYLFTC4 PAYLFTC5 PAYLFTC6 ; ARRAY AMTOWEC {*} AMTOWEC1 AMTOWEC2 AMTOWEC3 AMTOWEC4 AMTOWEC5 AMTOWEC6 ; ARRAY AMTOWE_1C {*} AMTOWE_1C1 AMTOWE_1C2 AMTOWE_1C3 AMTOWE_1C4 AMTOWE_1C5 AMTOWE_1C6 ; ARRAY AINTEXPC {*} AINTEXPC1 AINTEXPC2 AINTEXPC3 AINTEXPC4 AINTEXPC5 AINTEXPC6 ; ARRAY LNAGEC {*} LNAGEC1 LNAGEC2 LNAGEC3 LNAGEC4 LNAGEC5 LNAGEC6 ; ARRAY QUALNC {*} QUALNC1 QUALNC2 QUALNC3 QUALNC4 QUALNC5 QUALNC6 ; ARRAY CURBALC {*} CURBALC1 CURBALC2 CURBALC3 CURBALC4 CURBALC5 CURBALC6 ; ARRAY CURBAL_1C {*} CURBAL_1C1 CURBAL_1C2 CURBAL_1C3 CURBAL_1C4 CURBAL_1C5 CURBAL_1C6 ; ARRAY CINTEXPC {*} CINTEXPC1 CINTEXPC2 CINTEXPC3 CINTEXPC4 CINTEXPC5 CINTEXPC6 ; ARRAY DCTDIFFC {*} DCTDIFFC1 DCTDIFFC2 DCTDIFFC3 DCTDIFFC4 DCTDIFFC5 DCTDIFFC6 ; ARRAY SINTEXPC {*} SINTEXPC1 SINTEXPC2 SINTEXPC3 SINTEXPC4 SINTEXPC5 SINTEXPC6 ; ARRAY AVINTEXPC {*} AVINTEXPC1 AVINTEXPC2 AVINTEXPC3 AVINTEXPC4 AVINTEXPC5 AVINTEXPC6 ; ARRAY REGPAYFC {*} B4220 B4240 B4260 B4280 B4300 B4320; ARRAY REGPAYC {*} B4219 B4239 B4259 B4279 B4299 B4319; ARRAY LNSTYRC {*} B4214 B4234 B4254 B4274 B4294 B4314 ; ARRAY AMTBORRC {*} B4218 B4238 B4258 B4278 B4298 B4318; ARRAY AMTOUTC {*} B4212 B4232 B4252 B4272 B4292 B4312; ARRAY INTRATEC {*} B4223 B4243 B4263 B4283 B4303 B4323; ARRAY HAVELNC {*} HLNC1 HLNC2 HLNC3 HLNC4 HLNC5 HLNC6; ARRAY LNTYPEC {*} B4211 B4231 B4251 B4271 B4291 B4311; * Initialize some variables; DO I=1 TO DIM(TLMTHC); CMOPAYC{I}=0; PAYLFTC{I}=0; AMTOWEC{I}=0; AMTOWE_1C{I}=0; AINTEXPC{I}=0; LNAGEC{I}=0; CURBALC{I}=0; CURBAL_1C{I}=0; CINTEXPC{I}=0; DCTDIFFC{I}=0; SINTEXPC{I}=0; AVINTEXPC{I}=0; QUALNC{I}=0; HAVELNC{I}=(AMTOUTC{I} > 0); END; TOTLNPINEXC=0; QUALNPINEXC=0; DO I=1 TO DIM(TLMTHC); IF (REGPAYC{I} > 0) THEN DO; %MOCONV(AMT=REGPAYC{I},MOAMT=CMOPAYC{I},PER=REGPAYFC{I},IML=NO,YEAR8=NO); END; IF (REGPAYFC{I} NOT IN(0 8)) THEN DO; PAYLFTC{I}=(TLMTHC{I}-((1983-LNSTYRC{I})*12)); LNAGEC{I}=TLMTHC{I}-PAYLFTC{I}; END; END; DO I=1 TO DIM(HAVELNC); IF (HAVELNC{I}=1) THEN DO; QUALNC{I}=1; QUALNPINEXC=QUALNPINEXC+QUALNC{I}; IF (TLMTHC{I} NOT IN(0 -9) & INTRATEC{I}^=-6) THEN DO; IF (TLMTHC{I} > 0 & CMOPAYC{I} > 0 & PAYLFTC{I} > 0) THEN DO; AMTOWEC{I}=CMOPAYC{I}*((1-1/(1+(INTRATEC{I}/1000)/12)**PAYLFTC{I})/ ((INTRATEC{I}/1000)/12)); AMTOWE_1C{I}=CMOPAYC{I}*((1-1/(1+(INTRATEC{I}/1000)/12)**(PAYLFTC{I}+12))/ ((INTRATEC{I}/1000)/12)); IF LNSTYRC{I}^=1983 THEN AINTEXPC{I}=(CMOPAYC{I}*12)-(AMTOWE_1C{I}-AMTOWEC{I}); ELSE IF LNSTYRC{I}=1983 THEN AINTEXPC{I}=AMTOUTC{I}*(INTRATEC{I}/1000); END; ELSE IF (TLMTHC{I} < 0 | CMOPAYC{I} < 0 | PAYLFTC{I} < 0) THEN DO; AMTOWEC{I}=0; AMTOWE_1C{I}=0; AINTEXPC{I}=0; END; IF (TLMTHC{I} > 0 & AMTBORRC{I} > 0 & LNAGEC{I} > 0) THEN DO; CURBALC{I}=AMTBORRC{I}*(((1+(INTRATEC{I}/1000)/12)**TLMTHC{I})- ((1+(INTRATEC{I}/1000)/12)**(LNAGEC{I})))/ (((1+(INTRATEC{I}/1000)/12)**TLMTHC{I})-1); CURBAL_1C{I}=AMTBORRC{I}*(((1+(INTRATEC{I}/1000)/12)**TLMTHC{I})- ((1+(INTRATEC{I}/1000)/12)**(LNAGEC{I}-12)))/ (((1+(INTRATEC{I}/1000)/12)**TLMTHC{I})-1); CINTEXPC{I}=(CMOPAYC{I}*12)-(CURBAL_1C{I}-CURBALC{I}); END; ELSE IF (TLMTHC{I} < 0 | AMTBORRC{I} < 0 | LNAGEC{I} < 0) THEN DO; CURBALC{I}=0; CURBAL_1C{I}=0; CINTEXPC{I}=0; END; IF (AMTOUTC{I} > 0 & INTRATEC{I} > 0) THEN SINTEXPC{I}=AMTOUTC{I}*(INTRATEC{I}/1000); ELSE SINTEXPC{I}=0; * Also fixing cases where loan ends or starts in the survey year. Setting interest deduction to amount outstanding for year prior to the survey times the interest rate for loans ending in the survey year. For cases where the loan starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTHC{I} > 0 & CMOPAYC{I} > 0 & PAYLFTC{I}=0) THEN DO; CINTEXPC{I}=CURBAL_1C{I}*(INTRATEC{I}/1000); AINTEXPC{I}=CINTEXPC{I}; END; IF (TLMTHC{I} > 0 & CMOPAYC{I} > 0 & LNSTYRC{I}=1983) THEN DO; CINTEXPC{I}=SINTEXPC{I}; AINTEXPC{I}=SINTEXPC{I}; END; * Ad hoc fix for negative personal interest deduction. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest deduction equals the reported amount outstanding times the interest rate.; IF ((AINTEXPC{I} < 0 | CINTEXPC{I} < 0) & CURBALC{I} > 0 & CURBAL_1C{I} > 0) THEN DO; CINTEXPC{I}=CURBAL_1C{I}*(INTRATEC{I}/1000); AINTEXPC{I}=CINTEXPC{I}; END; ELSE IF ((AINTEXPC{I} < 0 | CINTEXPC{I} < 0) & (CURBALC{I} <= 0 & CURBAL_1C{I} <= 0)) THEN DO; CINTEXPC{I}=SINTEXPC{I}; AINTEXPC{I}=SINTEXPC{I}; END; IF (SINTEXPC{I} > 0 & CINTEXPC{I} > 0) THEN DCTDIFFC{I}=CINTEXPC{I}-SINTEXPC{I}; ELSE DCTDIFFC{I}=0; END; ELSE IF (TLMTHC{I}=-9 & AMTOUTC{I} > 0 & INTRATEC{I} > 0) THEN DO; SINTEXPC{I}=AMTOUTC{I}*(INTRATEC{I}/1000); AINTEXPC{I}=SINTEXPC{I}; CINTEXPC{I}=SINTEXPC{I}; END; ELSE IF (INTRATEC{I}=-6) THEN DO; AINTEXPC{I}=0; CINTEXPC{I}=0; SINTEXPC{I}=0; END; * Averaging across the three measures of personal interest deduction; IF ((CINTEXPC{I} + AINTEXPC{I} + SINTEXPC{I}) > 0) THEN DO; AVINTEXPC{I}=(CINTEXPC{I}+AINTEXPC{I}+SINTEXPC{I})/3; END; ELSE AVINTEXPC{I}=0; * Constraining personal interest deduction amount to be no more than the reported year loan payment - using avintdedct as prefered personal interest deduction measure. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (AVINTEXPC{I} > 0 & CMOPAYC{I} > 0 & (AVINTEXPC{I} > CMOPAYC{I}*12)) THEN DO; AVINTEXPC{I}=CMOPAYC{I}*12; CINTEXPC{I}=AVINTEXPC{I}; AINTEXPC{I}=AVINTEXPC{I}; SINTEXPC{I}=AVINTEXPC{I}; END; IF (AVINTEXPC{I} > 0 & AMTOUTC{I} > 0 & (AVINTEXPC{I} > .30*AMTOUTC{I})) THEN DO; AVINTEXPC{I}=AMTOUTC{I}*(INTRATEC{I}/10000); CINTEXPC{I}=AVINTEXPC{I}; AINTEXPC{I}=AVINTEXPC{I}; END; IF (AVINTEXPC{I}=0) THEN PUT V1= TLMTHC{I}= REGPAYFC{I}= REGPAYC{I}= CMOPAYC{I}= LNSTYRC{I}= PAYLFTC{I}= LNAGEC{I}= AMTOUTC{I}= AMTOWEC{I}= AMTOWE_1C{I}= AINTEXPC{I}= CURBALC{I}= CURBAL_1C{I}= CINTEXPC{I}= DCTDIFFC{I}= SINTEXPC{I}= AVINTEXPC{I}= INTRATEC{I}= AMTBORRC{I}= LNTYPEC{I}= /; IF (AVINTEXPC{I} > .30*AMTOUTC{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= TLMTHC{I}= REGPAYFC{I}= REGPAYC{I}= CMOPAYC{I}= LNSTYRC{I}= PAYLFTC{I}= LNAGEC{I}= AMTOUTC{I}= AMTOWEC{I}= AMTOWE_1C{I}= AINTEXPC{I}= CURBALC{I}= CURBAL_1C{I}= CINTEXPC{I}= DCTDIFFC{I}= SINTEXPC{I}= AVINTEXPC{I}= INTRATEC{I}= AMTBORRC{I}= LNTYPEC{I}= /; * Compute car/vehicle/HI personal interest deduction; TOTLNPINEXC=TOTLNPINEXC+AVINTEXPC{I}; END; END; * Other consumer loans, using the code for other loans from the investment interest expense computations; QUALNPINEXI=0; TOTLNPINEXI=0; DO I=1 TO DIM(HAVELNI); IF (HAVELNI{I}=1 & LNTYPEI{I} NOT IN(0 72 79)) THEN DO; * indicator and counter of qualified loans; QUALN{I}=1; QUALNPINEXI=QUALNPINEXI+QUALN{I}; IF (TLMTHI{I} NOT IN(0 -9) & INTRATEI{I}^=-6) THEN DO; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & PAYLFTI{I} > 0) THEN DO; AMTOWEI{I}=CMOPAYI{I}*((1-1/(1+(INTRATEI{I}/1000)/12)**PAYLFTI{I})/ ((INTRATEI{I}/1000)/12)); AMTOWE_1I{I}=CMOPAYI{I}*((1-1/(1+(INTRATEI{I}/1000)/12)**(PAYLFTI{I}+12))/ ((INTRATEI{I}/1000)/12)); IF LNSTYRI{I}^=1983 THEN AINTEXPI{I}=(CMOPAYI{I}*12)-(AMTOWE_1I{I}-AMTOWEI{I}); ELSE IF LNSTYRI{I}=1983 THEN AINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); END; ELSE IF (TLMTHI{I} < 0 | CMOPAYI{I} < 0 | PAYLFTI{I} < 0) THEN DO; AMTOWEI{I}=0; AMTOWE_1I{I}=0; AINTEXPI{I}=0; END; IF (TLMTHI{I} > 0 & AMTBORRI{I} > 0 & LNAGEI{I} > 0) THEN DO; CURBALI{I}=AMTBORRI{I}*(((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})- ((1+(INTRATEI{I}/1000)/12)**(LNAGEI{I})))/ (((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})-1); CURBAL_1I{I}=AMTBORRI{I}*(((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})- ((1+(INTRATEI{I}/1000)/12)**(LNAGEI{I}-12)))/ (((1+(INTRATEI{I}/1000)/12)**TLMTHI{I})-1); CINTEXPI{I}=(CMOPAYI{I}*12)-(CURBAL_1I{I}-CURBALI{I}); END; ELSE IF (TLMTHI{I} < 0 | AMTBORRI{I} < 0 | LNAGEI{I} < 0) THEN DO; CURBALI{I}=0; CURBAL_1I{I}=0; CINTEXPI{I}=0; END; IF (AMTOUTI{I} > 0 & INTRATEI{I} > 0) THEN SINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); ELSE SINTEXPI{I}=0; * Also fixing cases where loan ends or starts in the survey year. Setting interest expense to amount outstanding for year prior to the survey times the interest rate for loans ending in the survey year. For cases where the loan starts in the survey year, just use amount borrowed times the interest rate; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & PAYLFTI{I}=0) THEN DO; CINTEXPI{I}=CURBAL_1I{I}*(INTRATEI{I}/1000); AINTEXPI{I}=CINTEXPI{I}; END; IF (TLMTHI{I} > 0 & CMOPAYI{I} > 0 & LNSTYRI{I}=1983) THEN DO; CINTEXPI{I}=SINTEXPI{I}; AINTEXPI{I}=SINTEXPI{I}; END; * Ad hoc fix for negative interest expenses. Basically sets the interest deduction equal to curball1_1 times the interest rate if curball1 and curball1_1 are positive, otherwise the interest expense equals the reported amount outstanding times the interest rate.; IF ((AINTEXPI{I} < 0 | CINTEXPI{I} < 0) & CURBALI{I} > 0 & CURBAL_1I{I} > 0) THEN DO; CINTEXPI{I}=CURBAL_1I{I}*(INTRATEI{I}/1000); AINTEXPI{I}=CINTEXPI{I}; END; ELSE IF ((AINTEXPI{I} < 0 | CINTEXPI{I} < 0) & (CURBALI{I} <= 0 & CURBAL_1I{I} <= 0)) THEN DO; CINTEXPI{I}=SINTEXPI{I}; AINTEXPI{I}=SINTEXPI{I}; END; IF (SINTEXPI{I} > 0 & CINTEXPI{I} > 0) THEN DCTDIFFI{I}=CINTEXPI{I}-SINTEXPI{I}; ELSE DCTDIFFI{I}=0; END; ELSE IF (TLMTHI{I}=-9 & AMTOUTI{I} > 0 & INTRATEI{I} > 0) THEN DO; SINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/1000); AINTEXPI{I}=SINTEXPI{I}; CINTEXPI{I}=SINTEXPI{I}; END; ELSE IF (INTRATEI{I}=-6) THEN DO; AINTEXPI{I}=0; CINTEXPI{I}=0; SINTEXPI{I}=0; END; * Averaging across the three measures of interest expense; IF ((CINTEXPI{I} + AINTEXPI{I} + SINTEXPI{I}) > 0) THEN DO; AVINTEXPI{I}=(CINTEXPI{I}+AINTEXPI{I}+SINTEXPI{I})/3; END; ELSE AVINTEXPI{I}=0; * Constraining interest expense amount to be no more than the reported year loan payment - using avintdedct as prefered interest expense measure. Also putting in a fix for cases were the interest deduction is more than 30 percent of the current amount outstanding. If this is the case then the use the simple interest deduction.; IF (AVINTEXPI{I} > 0 & CMOPAYI{I} > 0 & (AVINTEXPI{I} > CMOPAYI{I}*12)) THEN DO; AVINTEXPI{I}=CMOPAYI{I}*12; CINTEXPI{I}=AVINTEXPI{I}; AINTEXPI{I}=AVINTEXPI{I}; SINTEXPI{I}=AVINTEXPI{I}; END; IF (AVINTEXPI{I} > 0 & AMTOUTI{I} > 0 & (AVINTEXPI{I} > .30*AMTOUTI{I})) THEN DO; AVINTEXPI{I}=AMTOUTI{I}*(INTRATEI{I}/10000); CINTEXPI{I}=AVINTEXPI{I}; AINTEXPI{I}=AVINTEXPI{I}; END; IF (AVINTEXPI{I}=0) THEN PUT V1= TLMTHI{I}= REGPAYFI{I}= REGPAYI{I}= CMOPAYI{I}= LNSTYRI{I}= PAYLFTI{I}= LNAGEI{I}= AMTOUTI{I}= AMTOWEI{I}= AMTOWE_1I{I}= AINTEXPI{I}= CURBALI{I}= CURBAL_1I{I}= CINTEXPI{I}= DCTDIFFI{I}= SINTEXPI{I}= AVINTEXPI{I}= INTRATEI{I}= AMTBORRI{I}= LNTYPEI{I}= NUMLNI= /; IF (AVINTEXPI{I} > .30*AMTOUTI{I}) THEN PUT "DEDUCTION LARGER THAN 30% OF BALANCE OUTSTANDING " V1= TLMTHI{I}= REGPAYFI{I}= REGPAYI{I}= CMOPAYI{I}= LNSTYRI{I}= PAYLFTI{I}= LNAGEI{I}= AMTOUTI{I}= AMTOWEI{I}= AMTOWE_1I{I}= AINTEXPI{I}= CURBALI{I}= CURBAL_1I{I}= CINTEXPI{I}= DCTDIFFI{I}= SINTEXPI{I}= AVINTEXPI{I}= INTRATEI{I}= AMTBORRI{I}= LNTYPEI{I}= NUMLNI=/; * Compute other loans personal interest deduction; TOTLNPINEXI=TOTLNPINEXI+AVINTEXPI{I}; END; END; * Loans against whole life insurance policies - information not collected in 1983; * Total personal interest deduction; TOTPINEX=MAX(0,(CCPINEX+TOTLNPINEXC+TOTLNPINEXI)); *************AGI; * AGI; AGI=B3219; FAGI=B3220; * Constructing some agi classes to compare the amount of deductions I compute to the IRS tables.; AGICL=0; IF (AGI <= 0) THEN AGICL=-1; ELSE IF (0 < AGI < 5000) THEN AGICL=1; ELSE IF (5000 <= AGI < 10000) THEN AGICL=2; ELSE IF (10000 <= AGI < 15000) THEN AGICL=3; ELSE IF (15000 <= AGI < 20000) THEN AGICL=4; ELSE IF (20000 <= AGI < 25000) THEN AGICL=5; ELSE IF (25000 <= AGI < 30000) THEN AGICL=6; ELSE IF (30000 <= AGI < 35000) THEN AGICL=7; ELSE IF (35000 <= AGI < 40000) THEN AGICL=8; ELSE IF (40000 <= AGI < 45000) THEN AGICL=9; ELSE IF (45000 <= AGI < 50000) THEN AGICL=10; ELSE IF (50000 <= AGI < 55000) THEN AGICL=11; ELSE IF (55000 <= AGI < 60000) THEN AGICL=12; ELSE IF (60000 <= AGI < 75000) THEN AGICL=13; ELSE IF (75000 <= AGI < 100000) THEN AGICL=14; ELSE IF (100000 <= AGI < 200000) THEN AGICL=15; ELSE IF (200000 <= AGI < 500000) THEN AGICL=16; ELSE IF (500000 <= AGI < 1000000) THEN AGICL=17; ELSE IF (AGI >= 1000000) THEN AGICL=18; * Computing a rough estimate of how many NPEU people we have and what their income distribution is like. Cannot separate out income when multiple people in NPEU; NPEU=(B3128 IN(31 32 34 35 39))+(B3131 IN(31 32 34 35 39))+(B3134 IN(31 32 33 34 35 36 37 38 39))+(B3137 IN(31 32 34 35 39))+(B3140 IN(31 32 33 34 35 36 37 38 39))+(B3143 IN(31 32 34 35 39))+(B3146 IN(31 32 34 35 39))+(B3149 IN(31 32 33 34 35 36 37 38 39))+(B3152 IN(31 32 34 35 39)); **************Charitable Contributions; * Charitable contributions not collected in 1983, using coefficients from 1986 data to predict contributions; CHARITYAMT=0; IF (GCHARITY=1 & TCHARITYAMT > 0) THEN DO; IF ((FILESTAT > 0) & (TCHARITYAMT > .5*AGI)) THEN CHARITYAMT=.5*AGI; ELSE IF ((FILESTAT > 0) & (TCHARITYAMT <= .5*AGI)) THEN CHARITYAMT=TCHARITYAMT; END; **********Total itemized deductions and exemptions * Total itemized deductions, including property taxes here, but remember to separate them out for TAXSIM.; * No limit on deductions in 1982 tax year; TOTITEMDCT=MAX(0,(ADJDEDCT+RESTAXM1+TOTINVEX+TOTPINEX+CHARITYAMT)); * Total dollar amount of exemptions; TOTEXPTAMT=MAX(0,(TOTEXPT*1000)); * Zero bracket amount for 1982 (like a standard deduction); ZEROBR=0; IF (FILESTAT IN(1 4)) THEN ZEROBR=2300; ELSE IF (FILESTAT=2) THEN ZEROBR=3400; * Did the hh itemize, did itemize question not asked in 1983, only have constructed measure; CITEMIZE=(TOTITEMDCT > ZEROBR); * In 1982, non-itemizers could deduct 25% of the first $100 in charitable contributions; IF (CITEMIZE=0 & GCHARITY=1 & TCHARITYAMT > 0) THEN DO; IF TCHARITYAMT >= 100 THEN TCHARITYAMT=25; ELSE IF TCHARITYAMT < 100 THEN TCHARITYAMT=TCHARITYAMT*.25; END; * Create variables for internet TAXSIM dataset. Recode state variable for non-high-income sample to TAXSIM state codes; YEAR=1982; STATE=0; IF B3121 > 0 THEN DO; IF B3121=1 THEN STATE=1; ELSE IF B3121=4 THEN STATE=3; ELSE IF B3121=5 THEN STATE=4; ELSE IF B3121=6 THEN STATE=5; ELSE IF B3121=8 THEN STATE=6; ELSE IF B3121=9 THEN STATE=7; ELSE IF B3121=11 THEN STATE=9; ELSE IF B3121=12 THEN STATE=10; ELSE IF B3121=13 THEN STATE=11; ELSE IF B3121=17 THEN STATE=14; ELSE IF B3121=18 THEN STATE=15; ELSE IF B3121=19 THEN STATE=16; ELSE IF B3121=21 THEN STATE=18; ELSE IF B3121=22 THEN STATE=19; ELSE IF B3121=23 THEN STATE=20; ELSE IF B3121=24 THEN STATE=21; ELSE IF B3121=25 THEN STATE=22; ELSE IF B3121=26 THEN STATE=23; ELSE IF B3121=27 THEN STATE=24; ELSE IF B3121=28 THEN STATE=25; ELSE IF B3121=29 THEN STATE=26; ELSE IF B3121=31 THEN STATE=28; ELSE IF B3121=34 THEN STATE=31; ELSE IF B3121=36 THEN STATE=33; ELSE IF B3121=37 THEN STATE=34; ELSE IF B3121=39 THEN STATE=36; ELSE IF B3121=40 THEN STATE=37; ELSE IF B3121=41 THEN STATE=38; ELSE IF B3121=42 THEN STATE=39; ELSE IF B3121=45 THEN STATE=41; ELSE IF B3121=46 THEN STATE=42; ELSE IF B3121=47 THEN STATE=43; ELSE IF B3121=48 THEN STATE=44; ELSE IF B3121=49 THEN STATE=45; ELSE IF B3121=51 THEN STATE=47; ELSE IF B3121=53 THEN STATE=48; ELSE IF B3121=54 THEN STATE=49; ELSE IF B3121=55 THEN STATE=50; END; ELSE IF STATE=0 & B3121^=0 THEN PUT "MISSING STATE " V1= B3121= STATE=; IF FILESTAT=4 THEN MARITST=3; ELSE MARITST=FILESTAT; IF FILESTAT IN(1 4 5) THEN AGEXMP=(RAGE > 65); ELSE IF FILESTAT=2 THEN AGEXMP=(RAGE > 65) + (SPAGE > 65); WSINCOME = MAX(0,B3205); WSINCSP=0; TBUSINC = B3206; NTAXINC= MAX(0,B3207); INTINC= MAX(0,B3208); DIVINC= MAX(0,B3209); * Dividing capital gains/losses up into long-term and short-term portions based on the following procedure. Using the aggregate data on long-term and short-term capital gains/losses from the IRS SOI Individual report (table 1.4), the share of gains/losses that are long and short term is determined for 3 broad AGI classes, < 50K, 50 to < 100K, and 100K +. The shares from this computation are then applied to the data (by AGI class). Special note for 1983 - since the information in IRS table 1.4 changes, using net LT/ST gain/loss after carryover as aggregate measure.; CAPGLINC=B3210; STCAPINC=0; LTCAPINC=0; IF (AGICL IN(-1 1 2 3 4 5 6 7 8 9 10)) THEN DO; IF (CAPGLINC > 0) THEN DO; LTCAPINC=CAPGLINC*.97; STCAPINC=CAPGLINC*.03; END; ELSE IF (CAPGLINC < 0) THEN DO; LTCAPINC=CAPGLINC*.5; STCAPINC=CAPGLINC*.5; END; END; ELSE IF (AGICL IN(11 12 13 14)) THEN DO; IF (CAPGLINC > 0) THEN DO; LTCAPINC=CAPGLINC*.98; STCAPINC=CAPGLINC*.02; END; ELSE IF (CAPGLINC < 0) THEN DO; LTCAPINC=CAPGLINC*.51; STCAPINC=CAPGLINC*.49; END; END; ELSE IF (AGICL IN(15 16 17 18)) THEN DO; IF (CAPGLINC > 0) THEN DO; LTCAPINC=CAPGLINC*.99; STCAPINC=CAPGLINC*.01; END; ELSE IF (CAPGLINC < 0) THEN DO; LTCAPINC=CAPGLINC*.39; STCAPINC=CAPGLINC*.61; END; END; RENTINC= B3211; UNEMPINC = MAX(0,B3212); CHSPALINC=MAX(0,B3213); AFDCINC = MAX(0,B3214); OTHINC= B3216; * Since SS is included in b3215, subtracting out SS income reported in section r if SS benefits were received during the tax year; GSSINC=MAX(0,B5103)+MAX(0,B5203); IF GSSINC=0 THEN PENINC= MAX(0,B3215); ELSE IF (GSSINC > 0) THEN PENINC=MAX(0,(B3215-GSSINC)); OTHPINC=RENTINC+INTINC+TBUSINC+CHSPALINC+OTHINC; NONTAX=NTAXINC+AFDCINC; RENT=MAX(0,(B3705*12)); * unadjtotdedct is the total amount of itemized deductions; UNADJTOTDEDCT=MAX(0,(ADJDEDCT+TOTINVEX+TOTPINEX+CHARITYAMT)); * Need to split out AMT preference items among deductions. State taxes are computed by TAXSIM, so just need to divide up mortgage interest, investment interest expense, personal interest, and charitable contributions; AMTPREFDEDCT=MAX(0,TOTINVEX+TOTPINEX); AMTNPREFDEDCT=MAX(0,(ADJDEDCT+CHARITYAMT)); CHCAREXP=0; TOTXINC=WSINCOME+WSINCSP+DIVINC+OTHPINC+PENINC+GSSINC+UNEMPINC+STCAPINC +LTCAPINC; STAXINC=MAX(0,(AGI-MAX(0,TOTITEMDCT,ZEROBR)-TOTEXPTAMT)); * Check for cases were totxinc=0 and b3201 > 0 - should be none. Note that b3207 and b3214 are not included in totxinc, so check that they are zero.; IF TOTXINC=0 & B3201 > 0 & B3207=0 & B3214=0 THEN PUT "TOTXINC IS ZERO BUT B3201 > 0 " V1= TOTXINC= B3201= B3205= B3206= B3207= B3208= B3209= B3210= B3211= B3212= B3213= B3214= B3215= B3216= RAGE= SPAGE= FILESTAT= B4510= B4610=/; * Adding in payroll tax liability and mtr, assuming employee pays both employee and employer share, and in 1982 the SE pay 1.4x the employee amount. Therefore, the rate is 9.35% for the SE(sole props, parnterships and LLPs only, scorps and corps treated like EMPs). Also need rules for computing mtr from the payroll tax, for single earner households payroll mtr is just the contribution rate, unless earnings are above the maximum, then the payroll mtr is zero. For dual earner households, need to split up earnings reported in b3205/b3206 to compute the payroll tax liability and mtr. The rule used here is to look at the current earning for R and Sp, and as long as R and Sp have worked at their current jobs for at least one year, then use the percent each accounts for in total household earnings to split up b3205/b3206. If either R or Sp has been at their current job for less than one year, then split up b3205/b3206 50-50. Only computing the payroll mtr for R in dual earner households. Also, need to check for hhs who worked in 1982, but not currently working. For single earner households of this type, just calculate payroll tax liability and mtr using b3205/b3206. In the case of hhs with a two earners, divide b3205/b3206 50-50 and caculate the payroll liability and mtr. Computing the payroll atr in a similar fashion. For 1982, payroll tax rate was 13.4, with the earnings max of $32400 for OASI, DI, and HI (the SE rate is 9.35). NOTE: Need to adjust for different amounts used to compute the mtr, initially computing payroll mtr for adding $1 to earnings. Also need to compute check who in the hh is self-employed (using the SELFE definition); * wages already converted to annual amounts; REARN=B4546; SPEARN=B4646; HHEARN=REARN+SPEARN; SELFE=(B4540=8 & B3505 IN(0 1 2)); SPSELFE=(B4640=8 & B3505 IN(0 1 2)); PAYROLLIAB=0; PAYROLLMTR=0; PAYROLLATR=0; IF (B4540 IN(1 2 3 4 5 6 7 8) & B4640=0) | (B4540=0 & B4640=0 & B3128=0 & (B3205 > 0 | B3206 > 0)) THEN DO; PAYROLLIAB=(MIN(32400,(B3205+B3206*(B3206 >0)))*.134)*(SELFE=0) + (MIN(32400,(B3205+B3206*(B3206 >0)))*.0935)*(SELFE=1); PAYROLLMTR=(((B3205+B3206*(B3206 > 0)+1) <= 32400)*13.4)*(SELFE=0) + (((B3205+B3206*(B3206 > 0)+1) <= 32400)*9.35)*(SELFE=1); IF (PAYROLLIAB >0) THEN PAYROLLATR=100*(PAYROLLIAB/(B3205+B3206*(B3206 > 0))); END; ELSE IF (B4540=0 & B4640 IN(1 2 3 4 5 6 7 8)) THEN DO; PAYROLLIAB=(MIN(32400,(B3205+B3206*(B3206 >0)))*.134)*(SPSELFE=0) + (MIN(32400,(B3205+B3206*(B3206 >0)))*.0935)*(SPSELFE=1); PAYROLLMTR=(((B3205+B3206*(B3206 > 0)+1) <= 32400)*13.4)*(SPSELFE=0) + (((B3205+B3206*(B3206 > 0)+1) <= 32400)*9.35)*(SPSELFE=1); IF (PAYROLLIAB >0) THEN PAYROLLATR=100*(PAYROLLIAB/(B3205+B3206*(B3206 > 0))); END; ELSE IF (B4540 IN(1 2 3 4 5 6 7 8) & B4640 IN(1 2 3 4 5 6 7 8)) THEN DO; IF (B4543 >=1 & B4643 >=1 & HHEARN > 0) THEN DO; PAYROLLIAB=(MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.134)*(SELFE=0) +(MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.0935)*(SELFE=1) + (MIN(32400,((B3205+B3206*(B3206>0))*(SPEARN/HHEARN)))*.134)*(SPSELFE=0) + (MIN(32400,((B3205+B3206*(B3206>0))*(SPEARN/HHEARN)))*.0935)*(SPSELFE=1); PAYROLLMTR=(((B3205+B3206*(B3206 >0)+1)*(REARN/HHEARN) <= 32400)*13.4)*(SELFE=0) + (((B3205+B3206*(B3206 >0)+1)*(REARN/HHEARN) <= 32400)*9.35)*(SELFE=1); IF (((MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.134)*(SELFE=0) +(MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.0935)*(SELFE=1)) >0) THEN PAYROLLATR=100*(((MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.134) *(SELFE=0)+(MIN(32400,((B3205+B3206*(B3206>0))*(REARN/HHEARN)))*.0935)*(SELFE=1))/ ((B3205+B3206*(B3206>0))*(REARN/HHEARN))); END; END; ELSE IF (B4540=0 & B4640=0 & B3128^=0 & (B3205 > 0 | B3206 > 0)) THEN DO; PAYROLLIAB=(MIN(32400,((B3205+B3206*(B3206>0))*(.5)))*.134)*(SELFE=0) +(MIN(32400,((B3205+B3206*(B3206>0))*(.5)))*.0935)*(SELFE=1) + (MIN(32400,((B3205+B3206*(B3206>0))*(.5)))*.134)*(SPSELFE=0) + (MIN(32400,((B3205+B3206*(B3206>0))*(.5)))*.0935)*(SPSELFE=1); PAYROLLMTR=(((B3205+B3206*(B3206 >0)+1)*(.5) <= 32400)*13.4)*(SELFE=0) + (((B3205+B3206*(B3206 >0)+1)*(.5) <= 32400)*9.35)*(SELFE=1); IF (PAYROLLIAB*.5 > 0) THEN PAYROLLATR=100*((PAYROLLIAB*.5)/((B3205+B3206*(B3206 >0))*(.5))); END; ELSE IF PAYROLLIAB=0 & PAYROLLMTR=0 & PAYROLLATR=0 & (B3205 > 0 | B3206 > 0) THEN PUT "NO PAYROLL LIABILITY, MTR, OR ATR " V1= B3128= B4540= B4640= B4543= B4643= B4546= B4646= B3205= B3206= REARN= SPEARN= HHEARN= /; IF PAYROLLMTR=0 & (0 < (B3205+B3206*(B3206 > 0)) < 32400) THEN PUT "ZERO PAYROLLMTR " V1= B3128= B4540= B4640= B4543= B4643= B4546= B4646= B3205= B3206= REARN= SPEARN= HHEARN= /; * Check for missing variables; ARRAY CHVARS {*} V1 B3001 WGT PERSEXP KIDS TOTEXPT FILESTAT RAGE SPAGE B3125 B3128 B3703 YEAR STATE MARITST WSINCOME WSINCSP TBUSINC NTAXINC INTINC DIVINC CAPGLINC RENTINC UNEMPINC CHSPALINC AFDCINC OTHINC GSSINC PENINC OTHPINC NONTAX RENT UNADJTOTDEDCT CHCAREXP TOTXINC B3125 B3128 HLN1 B4104 QUALOTHPROP QUALOANINV HINVEX CITEMIZE QUALINVPROP AGICL NPEU QUALNPINEXC QUALNPINEXI B4004 B4026 B4454 B4020 HBLN1 HBLN2 HBLN3 B4011 NUMORT B4130 B3804 B3821 B3838 B3809 B3826 B3843 NUMLNI B4331 B4351 B4371 B4391 B4411 B4431 B4002 B4024 B4452 AMTOWEM1 CURBALM1 AINTDCTM1 CINTDCTM1 SINTDCTM1 AVINTDCTM1 TOTDEDCTM HOUSE B3806 B3823 B3840 AMTOWEO1 CURBALO1 AINTDCTO1 CINTDCTO1 AVINTDCTO1 SINTDCTO1 TOTDEDCTO TOTAMTOUTO FMVOPO ADJDEDCT RESTAXM1 TOTINTINC TOTINVPDCT TOTLNINVEX TOTINVEX TOTLOCINVEX CCPINEX TOTLNPINEXC TOTLNPINEXI TOTPINEX TOTITEMDCT ZEROBR AGI TOTEXPT TOTEXPTAMT B3201 AGEXMP TOTAMTOUTM B4125 B5405 TCHARITYAMT GCHARITY CHARITYAMT B3708 B4009 STCAPINC LTCAPINC PAYROLLIAB PAYROLLMTR PAYROLLATR LWP B3112 KIDSU17 FAGI AMTPREFDEDCT AMTNPREFDEDCT; DO I=1 TO DIM(CHVARS); IF CHVARS{I}=. THEN PUT "MISSING VALUE FOR " V1= CHVARS{I}=; END; RUN; * Create a dataset to send to Feenberg at NBER, STATE VAR SET TO ZERO FOR HIGH INCOME SAMPLE - to get tax rates for all states for high-income sample, set state=-1; DATA DAN83; SET T83; IF B3001=1 THEN STATE=0; FILE INTAX83; IF FILESTAT > 0; PUT V1 YEAR STATE FILESTAT KIDS AGEXMP WSINCOME WSINCSP DIVINC OTHPINC PENINC GSSINC NONTAX RENT RESTAXM1 AMTPREFDEDCT CHCAREXP UNEMPINC KIDSU17 AMTNPREFDEDCT STCAPINC LTCAPINC; RUN; * Compute some stats on the data; PROC FREQ DATA=T83; TABLES FILESTAT CITEMIZE; RUN; PROC MEANS DATA=T83; FREQ WGT; VAR YEAR STATE FILESTAT KIDS AGEXMP WSINCOME WSINCSP DIVINC OTHPINC PENINC GSSINC NONTAX RENT RESTAXM1 AMTPREFDEDCT CHCAREXP UNEMPINC KIDSU17 AMTNPREFDEDCT STCAPINC LTCAPINC; RUN; /* * Uncomment this code after you have run the data through TAXSIM; * Merge full TAXSIM rates back into the dataset; DATA ITAX83P; INFILE TAXSIM83; INPUT V1 YEAR STATE FEDTAXLIAB STTAXLIAB FICA FEDMTR STMTR FICAR; DROP YEAR ; RUN; PROC SORT DATA=ITAX83P; BY V1; RUN; PROC SORT DATA=T83; BY V1; RUN; DATA TAX83; MERGE T83 (IN=IN1) ITAX83P; BY V1; IF IN1; RUN; DATA TAX83; SET TAX83; * only calculating average tax rates for hhs with positive taxable income and a positive tax liability, restricting atr to be at most 100%; IF (TOTXINC > 0 & FEDTAXLIAB > 0) THEN FEDATR=(FEDTAXLIAB/TOTXINC)*100; ELSE FEDATR=0; IF (TOTXINC > 0 & STTAXLIAB > 0) THEN STATR=(STTAXLIAB/TOTXINC)*100; ELSE STATR=0; TOTATR=MIN(100,(FEDATR+STATR+PAYROLLATR)); * Checking out negative and high tax liabilities and rates; IF (FEDTAXLIAB < 0 | FEDMTR < 0) & FILESTAT > 0 THEN PUT "NEGATIVE FED TAX LIABILITY OR RATE " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; IF (STTAXLIAB < 0 | STMTR < 0) & FILESTAT > 0 THEN PUT "NEGATIVE STATE TAX LIABILITY OR RATE " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; IF FEDMTR > 50 & FILESTAT > 0 THEN PUT "HIGH FED MTR1 " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; IF STMTR > 30 & FILESTAT > 0 THEN PUT "HIGH STATE MTR1 " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; IF FEDTAXLIAB > 5000000 & FILESTAT > 0 THEN PUT "HIGH FED TAX LIABILITY " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; IF STTAXLIAB > 1000000 & FILESTAT > 0 THEN PUT "HIGH STATE TAX LIABILITY " V1= FEDTAXLIAB= FEDMTR= FEDATR= STTAXLIAB= STMTR= STATR= MARITST= KIDS= AGEXMP= WSINCOME= WSINCSP= DIVINC= OTHPINC= PENINC= GSSINC= NONTAX= RENT= RESTAXM1= UNADJTOTDEDCT= CHCAREXP= UNEMPINC= CITEMIZE= TOTXINC= FILESTAT= TOTITEMDCT= ADJDEDCT= RESTAXM1= TOTINVEX= CHARITYAMT= TOTPINEX= TOTEXPT= KIDS= PERSEXP= AGI= ZEROBR= CAPGLINC= TBUSINC= B3201= STATE= B3001= /; PROC CONTENTS DATA=TAX83; RUN; * Compute some stats on the data; PROC MEANS DATA=TAX83; FREQ WGT; VAR YEAR STATE FILESTAT KIDS AGEXMP WSINCOME WSINCSP DIVINC OTHPINC PENINC GSSINC NONTAX RENT RESTAXM1 AMTPREFDEDCT CHCAREXP UNEMPINC KIDSU17 AMTNPREFDEDCT STCAPINC LTCAPINC FEDTAXLIAB STTAXLIAB FEDMTR STMTR; RUN; */ ENDSAS;