From sources-request at octave dot org Mon Dec 20 09:08:13 2004 Subject: Tax 0.1: Open source US Federal Tax software for octave. From: "D Goel" To: octave-sources at octave dot org Date: Mon, 20 Dec 2004 08:49:22 -0600 --=-=-= hi Please pardon me if this comes as a duplicate. I tried posting a previous version, tax-0.0 through the gmane mailinglist->newsgroup funnel yesterday, but that didn't go through, so posting tax-0.1 through mail. Attached, please find a few files (GPL) that calculate US federal income tax. Save them to your octave path, and type something like "tax" or "tax(,,-1,...)" or just type "help tax". My interested was sparked by the question of whether "married filing separately" can sometimes make more sense than "married filing jointly". To see the results of such an analysis for federal taxes, type tax_married_analysis. Or, just study the tax-bracket code, which makes it clear that: Federalwise, filing jointly is always equal or better to filing separately. However, if you and spouse earn about the same, the difference is zero or negligible. In that case, other considerations, like state taxes might become more important, when deciding your federal filing status. The tax code of KY, for example, seems to heavily favor couples filing separately. On the other hand, KY (probably) allows you to file separately even if you filed jointly on federal form, and thus, KY's tax code would have no effect on your choice of optimal federal filing status. Moreover, filing separately can adversely affect your eligiblity for IRAs, Earned Income Credit, etc. Regarding the verification of the accuracy of this software:. I have just one single data point of verification for this "tax software": I checked it on my "married filing jointly" tax return for 2003. If you find that this code was accurate or inaccurate for your returns, I would love to hear about it. Sincerely, DG http://gnufans.net/ -- --=-=-= Content-Disposition: inline; filename=README-tax.txt ;; 2004-12-18 T21:03:28-0500 (Saturday) D. Goel Sub: Open Source US Federal Tax software for octave. Attached, please find a few files (GPL) that calculate US federal income tax. Save them to your octave path, and type something like "tax" or "tax(,,-1,...)" or just type "help tax". My interested was sparked by the question of whether "married filing separately" can sometimes make more sense than "married filing jointly". To see the results of such an analysis for federal taxes, type tax_married_analysis. Or, just study the tax-bracket code, which makes it clear that: Federalwise, filing jointly is always equal or better to filing separately. However, if you and spouse earn about the same, the difference is zero or negligible. In that case, other considerations, like state taxes might become more important, when deciding your federal filing status. The tax code of KY, for example, seems to heavily favor couples filing separately. On the other hand, KY (probably) allows you to file separately even if you filed jointly on federal form, and thus, KY's tax code would have no effect on your choice of optimal federal filing status. Moreover, filing separately can adversely affect your eligiblity for IRAs, Earned Income Credit, etc. Regarding the verification of the accuracy of this software:. I have just one single data point of verification for this "tax software": I checked it on my "married filing jointly" tax return for 2003. If you find that this code was accurate or inaccurate for your returns, I would love to hear about it. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=tax_from_rates.m function fedtax=tax_from_rates (income,taxbrackets,taxrates) ## taxrates(i) is the tax for income lying between taxbrackets(i,i+1). ## taxrates(maximum) is the tax for income higher than ## taxbrackets(maximum). ## ## INCOME is NOT the total or adjusted gross income . It is the TAXABLE ## INCOME -- the one that remains AFTER YOU HAVE SUBTRACTED THE ## DEDUCTIONS AND THE EXEMPTIONS! if income<0 income=0; endif global taxverbosep=1; len=length(taxbrackets); bracket=lookup(taxbrackets,income); bracketpercstr=num2str(taxrates(bracket)); taxdisp(""); taxdisp(["Your federal tax bracket is " bracketpercstr \ "%."]); taxdisp(["This means that on the last few dollars you earn, you pay "; bracketpercstr "% federal tax, + state tax of up to 9.5%" ; "plus up to 12.4% in FICA"; "plus up to 2.9% in medicare."]); taxdisp(""); incomebrackets=taxbrackets(2:bracket)-taxbrackets(1:(bracket-1)); incomebrackets=[incomebrackets income-taxbrackets(bracket)]; fedtax=(incomebrackets*(taxrates(1:bracket))')/100; # a matrix # multiplication. fedtax endfunction --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=tax.m Content-Transfer-Encoding: base64 ZnVuY3Rpb24gZmVkdGF4PXRheChpbmNvbWUsc3RhdHVzLGV4ZW1wdGlvbnMseWVhcixkZWR1Y3Rp b24pOwoKICAjIyBGdW5jdGlvbiBmZWR0YXg9dGF4KGluY29tZSxzdGF0dXMsZXhlbXB0aW9ucyx5 ZWFyLGRlZHVjdGlvbik7CiAgIyMKICAjIyBGaWd1cmUgb3V0IHlvdXIgYXBwcm94aW1hdGUgVVMg ZmVkZXJhbCBpbmNvbWUgdGF4IGZvciB0aGUgZ2l2ZW4KICAjIyBZRUFSLCBhc3N1bWluZyBzdGFu ZGFyZCBkZWR1Y3Rpb24sIHVubGVzcyBhbiBpdGVtaXplZCBERURVQ1RJT04gaXMKICAjIyBzcGVj aWZpZWQuIFNUQVRVUyBjYW4gYmUgc3BlY2lmaWVkIGFzICJzaW5nbGUiIG9yIDEsICJtYXJyaWVk am9pbnQiCiAgIyMgb3IgMiwgIm1hcnJpZWRzZXBhcmF0ZSIgb3IgMywgImhlYWRob3VzZWhvbGQi IG9yIDQsCiAgIyMgInF1YWxpZnlpbmd3aWRvd2Vyd2l0aGNoaWxkIiBvciA1LiAgVEhJUyBJUyBK VVNUIEEgRlVOIENBTENVTEFUSU9OLAogICMjIFRIRSBBQ1RVQUwgVEFYIFNIT1VMRCBCRSBGSUdV UkVEIE9VVCBGUk9NIElSUydTIFRBWCBUQUJMRVMuICBUaGUKICAjIyBudW1iZXIgb2YgRVhFTVBU SU9OUyBjYW4gYmUgc3BlY2lmaWVkLCBlbHNlIGRlZmF1bHRzIHdpbGwgYmUKICAjIyBhc3N1bWVk LiBJZiB5b3Ugc3BlY2lmeSBuZWdhdGl2ZSBhbW91bnQgZm9yIGV4ZW1wdGlvbnMsIHdlIHdpbGwK ICAjIyBjaGFuZ2UgdGhhdCBiYWNrIHRvIGEgZGVmYXVsdC4gUGVvcGxlIG9sZGVyIHRoYW4gNjUs IGJsaW5kLCB0aG9zZQogICMjIHdpdGggZGVwZW5kZW50cywgZXRjLiBzaG91bGQgZmlndXJlIG91 dCB0aGVpciBhY3R1YWwgZXhlbXB0aW9ucyBhbmQKICAjIyBzcGVjaWZ5IGhlcmUuICBUbyByZXF1 ZXN0IHN0YW5kYXJkIGRlZHVjdGlvbiwgZWl0aGVyIGxlYXZlIHRoZQogICMjIERFRFVDVElPTiBm aWVsZCBibGFuaywgb3Igc3BlY2lmeSBhIG5lZ2F0aXZlIGFtb3VudC4gTm90ZSB0aGF0CiAgIyMg SU5DT01FIHRvIGJlIHNwZWNpZmllZCBpcyBOT1QgdGhlIG5ldCBpbmNvbWUsIGJ1dCB0aGUgQURK VVNURUQKICAjIyBHUk9TUyBJTkNPTUUgKEFHSSkgLS0gdGhlIGluY29tZSB0aGF0IHJlc3VsdHMg ZnJvbSBhZGRpbmcgYWxsIHlvdXIKICAjIyBzb3VyY2VzIG9mIGluY29tZSwgYW5kIHJlbW92aW5n IGFsbCBub24tdGF4YWJsZSBpbmNvbWVzLCBzdWNoIGFzCiAgIyMgSVJBIGRlZHVjdGlvbnMsIGV0 Yy4sIG9uZSBoYWxmIG9mIHNlbGYtZW1wbG95bWVudCB0YXgsIGV0Yy4gIFRoaXMKICAjIyBpcyB0 aGUgSU5DT01FIHRoYXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBvbiB0aGUgbGFzdCBsaW5lIG9m IHlvdXIKICAjIyAxMDQwLiBDdXJyZW50bHksIHRoaXMgd29ya3MgZm9yIHllYXJzIDIwMDMgYW5k IDIwMDQgZm9yIGZpbGluZwogICMjIHN0YXR1c2VzIDEtLTQsIGVsc2UgaXQgc2lnbmFscyBhbiBl cnJvci4KICAjIwogICMjIE9uY2UgYWdhaW4sIGZvciBhbnkgcXVhbnRpdHksIHlvdSBjYW4gZm9y Y2UgYSBkZWZhdWx0IGFzc3VtcHRpb24gYnkKICAjIyBzdXBwbHlpbmcgYSBuZWdhdGl2ZSB2YWx1 ZS4gIFRoZSBkZWZhdWx0IGlzIHVzdWFsbHkgY2FsY3VsYXRlZAogICMjIHNvbWV3aGF0ICJzbWFy dGx5Ii4KICAjIwogICMjCiAgIyMgQ29weXJpZ2h0IChDKSAyMDA0IGFuZCBvbndhcmRzIEQuIEdv ZWwKICAjIwogICMjIFRoaXMgZmlsZSBpcyBOT1QgKHlldCkgcGFydCBvZiBPY3RhdmUuCiAgIyMK ICAjIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKICAjIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICMjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAjIyBhbnkgbGF0ZXIg dmVyc2lvbi4KICAjIwogICMjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAjIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICMjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIyMg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICMjCiAgIyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKICAjIyBhbG9uZyB3aXRoIE9jdGF2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlCiAgIyMgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCiAgIyMgMDIxMTEtMTMwNywgVVNBLgogICMjCiAg IyMgLSotIHRleGluZm8gLSotIEBkZWZ0eXBlZm4ge0Z1bmN0aW9uIEZpbGV9IHt9IG5hbWVfb2Zf ZnVuY3Rpb24KICAjIyAoQHZhcnthcmcxfSwgQHZhcnthcmcyfSkgRG9lcyBmb28gYmFyLiBJZiBA dmFye2FyZzF9IGlzIG5vdAogICMjIHNwZWNpZmllZCBpdCBkZWZhdWx0cyB0byAwLCA4IG9yIDE2 IGRlcGVuZGluZyBvbiBLZXl3b3JkczogQGVuZAogICMjIGRlZnR5cGVmbiBAc2VlYWxzb3tmdW5j dGlvbjEsIGZ1bmN0aW9uMiwgZnVuY3Rpb24zfQogICMjCiAgIyMgQXV0aG9yOiBELiBHb2VsIDxk ZWVnb0BnbnVmYW5zLm9yZz4gQ3JlYXRlZDogMTggRGVjIDIwMDQKICAjIyBBZGFwdGVkLUJ5OgoK CiAgZ2xvYmFsIHRheHZlcmJvc2VwPTE7CiAgZ2xvYmFsIHRheF92ZXJzaW9uPTAuMTsKICBnbG9i YWwgdGF4X3VybD0iaHR0cDovL2dudWZhbnMubmV0L35kZWVnby9wdWIvb2N0YXZlL3RheC8iOwoK ICAKICB0YXh3YXJuaW5nOwoKICBpZiAobmFyZ2luPDEpCiAgICBpbmNvbWU9LTE7CiAgZW5kaWYK CiAgaWYgKGluY29tZTwwKTsKICAgIHRheGRpc3AoIk5vIGluY29tZSBzcGVjaWZpZWQuICBBU1NV TUlORyAxMDAwMDAiKTsKICAgIGluY29tZT0xMDAwMDA7CiAgZW5kaWYKCgogIGlmIChuYXJnaW48 Mik7CiAgICBzdGF0dXM9LTE7CiAgZW5kaWYKICAKICBpZiBzdGF0dXM8MDsKICAgIHRheGRpc3Ao Ik5vIGZpbGluZyBzdGF0dXMgc3BlY2lmaWVkLiAgQVNTVU1JTkcgU0lOR0xFIik7CiAgICBzdGF0 dXM9MTsKICBlbmRpZgoKCgogIGlmIChuYXJnaW48Myk7CiAgICBleGVtcHRpb25zPS0xOwogIGVu ZGlmCgoKCiAgaWYgaXNzdHIoc3RhdHVzKTsKICAgIGlmIHN0cmNtcChzdGF0dXMsInNpbmdsZSIp OwogICAgICBzdGF0dXM9MTsKICAgIGVsc2VpZgogICAgICBzdHJjbXAoc3RhdHVzLCJtYXJyaWVk am9pbnQiKTsKICAgICAgc3RhdHVzPTI7CiAgICBlbHNlaWYKICAgICAgc3RyY21wKHN0YXR1cywi bWFycmllZCIpOwogICAgICBzdGF0dXM9MjsKICAgIGVsc2VpZgogICAgICBzdHJjbXAoc3RhdHVz LCJtYXJyaWVkc2VwYXJhdGUiKTsKICAgICAgc3RhdHVzPTM7CiAgICBlbHNlaWYKICAgICAgc3Ry Y21wKHN0YXR1cywiaGVhZGhvdXNlaG9sZCIpOwogICAgICBzdGF0dXM9NDsKICAgIGVsc2VpZgog ICAgICBzdHJjbXAoc3RhdHVzLCJxdWFsaWZ5aW5nd2lkb3dlcndpdGhjaGlsZCIpOwogICAgICBz dGF0dXM9NTsKICAgIGVsc2UKICAgICAgKGVycm9yKCJVbmtub3duIHN0YXR1cyIpKQogICAgZW5k aWYKICBlbmRpZgoKICAKICBpZiBleGVtcHRpb25zPDA7CiAgICB0YXhkaXNwKCJOdW1iZXIgb2Yg ZXhlbXB0aW9ucyB3YXMgbm90IHNwZWNpZmllZC4gQXNzdW1pbmcgYSBkZWZhdWx0OiIpOwogICAg aWYgKHN0YXR1cz09MSl8KHN0YXR1cz09MykKICAgICAgZXhlbXB0aW9ucz0xOwogICAgZWxzZWlm IChzdGF0dXM9PTIpfChzdGF0dXM9PTQpfChzdGF0dXM9PTUpOwogICAgICBleGVtcHRpb25zPTI7 CiAgICBlbHNlCiAgICAgIHN0YXR1cwogICAgICBlcnJvcigiU2hvdWxkIG5vdCBoYXZlIHJlYWNo ZWQgaGVyZS4iKTsKICAgIGVuZGlmOwogICAgdGF4ZGlzcChbIk5VTUJFUiBPRiBFWEVNUFRJT05T IFRBS0VOIFRPIEJFICIgbnVtMnN0cihleGVtcHRpb25zKV0pOwogIGVuZGlmCgoKCiAgaWYgKG5h cmdpbjw0KTsKICAgIHllYXI9LTE7CiAgZW5kaWYKCiAgCiAgaWYgeWVhcjwwOwogICAgdGF4ZGlz cCgiTm8geWVhciBzcGVjaWZpZWQuIEFzc3VtaW5nIGEgZGVmYXVsdDoiKTsKICAgICMjIExldCdz IGdldCB0aGUgbW9zdCByZWxldmFudCB0YXggeWVhci4gCiAgICAjIyBJZiBpdCBpcyBiZWZvcmUg QXByaWwgMTUsIGdldCBsYXN0IHllYXIuIAogICAgY3VycnRpbWV2ZWM9Y2xvY2s7CiAgICBjdXJy eWVhcj1jdXJydGltZXZlYygxKTsKICAgIGN1cnJtb250aD1jdXJydGltZXZlYygyKTsKICAgIGN1 cnJkYXRlPWNsb2NrKDMpOwogICAgaWYgKGN1cnJtb250aD40KXwoKGN1cnJtb250aD00KSYoY3Vy cmRhdGU+MTUpKQogICAgICB5ZWFyPWN1cnJ5ZWFyOwogICAgZWxzZQogICAgICB5ZWFyPWN1cnJ5 ZWFyLTE7CiAgICBlbmRpZjsKICAgIHRheGRpc3AoWyJZRUFSIEFTU1VNRUQgVE8gQkU6ICIgbnVt MnN0cih5ZWFyKV0pOwogIGVuZGlmCgoKCiAgaWYgKG5hcmdpbjw1KTsKICAgIGRlZHVjdGlvbj0t MTsKICBlbmRpZgoKCiAgaWYgZGVkdWN0aW9uPDA7CiAgICBzdGRwPTE7CiAgICB0YXhkaXNwKCJX aWxsIHVzZSBzdGFuZGFyZCBkZWR1Y3Rpb24uIik7CiAgZWxzZQogICAgc3RkcD0wOwogIGVuZGlm CgogIHRheGRpc3AoIiIpOwoKCgogIGlmIChzdGF0dXM+MykKICAgIGVycm9yKCJUaGlzIGZpbGlu ZyBzdGF0dXMgaXMgbm90ICh5ZXQpIGltcGxlbWVudGVkIikKICBlbmRpZgogIAogIAogIAogIG51 bXllYXJzPTMwMDA7CgoKICAjIyBBbGxvdyB1cCB0byAyMCB0YXggYnJhY2tldHMsIGFuZCA1IGZp bGluZyBzdGF0dXNlcyBmb3IgZWFjaCB5ZWFyLgogICMjIFRoZSB5IHByZWZpeCA9PiB5ZWFyLiAK ICB5dGF4YnJhY2tldHM9emVyb3MobnVteWVhcnMsMjAsNSk7CiAgeXRheHJhdGVzPXplcm9zKG51 bXllYXJzLDIwLDUpOwogIHludW10YXhicmFja2V0cz16ZXJvcyhudW15ZWFycyk7CiAgeWRlZHVj dGlvbnM9emVyb3MobnVteWVhcnMsNSk7CiAgeWV4ZW1wdGlvbmFtb3VudHM9emVyb3MobnVteWVh cnMpOwoKICAjI0lmICBudW10YXhicmFja2V0cyBmb3IgYSBjZXJ0YWluIHllYXIgaXMgemVybywg dGhhdCBtZWFucyB0aGF0IHdlCiAgIyNoYXZlIG5vIGluZm8gZm9yIHRoYXQgeWVhci4gCgoKICAj IyB0YXhyYXRlcyhpLHgseCkgc3BlY2lmeSB0aGUgcmF0ZXMgZm9yIHRoZSBhbW91bnQgb2YgbW9u ZXkgYmVpbmcKICAjIyBlYXJuZWQgdGhhdCBsaWVzIGJldHdlZW4gdGF4YnJhY2tldHMoaSx4LHgp IGFuZAogICMjIHRheGJyYWNrZXRzKGkrMSx4LHgpLCB3aGVyZSBpIGNhbiBnbyB1cCB0byBudW10 YXhicmFja2V0cyh4KSBmb3IKICAjIyB0aGUgY3VycmVudCB5ZWFyLgoKICAjIyBJZiwgYnkgYW55 IGNoYW5jZSwgdGhlIG51bWJlciBvZiB0YXggYnJhY2tldHMgYXJlIGRpZmZlcmVudCBmb3IKICAj IyBkaWZmZXJlbnQgZmlsaW5nIHN0YXR1c2VzLCB0aGV5IGNhbiBhbHdheXMgYmUgbWFkZSBlcXVh bCBhZ2FpbiBieQogICMjIHNwZWNpZnlpbmcgYSBudWxsIHRheCBicmFja2V0LiAKICAKICAjIyBU aHVzLCB0YXhicmFja2V0cygwLHgseCkgaXMgYWx3YXlzIHplcm8uIAoKCiAgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogICMjIE5FWFQsIFdFIEZJTEwgSU4gU09NRSBUQVggSU5GT1JNQVRJT04gRk9SIFZBUklP VVMgWUVBUlM6IAogIAogICMjIEZvciBpbmZvIG9uIHRoaXMsIGdvb2dsZSBmb3IgdGF4IGJyYWNr ZXRzLCBvciBzZWFyY2ggSVJTIHNpdGUgZm9yCiAgIyMgdGF4IHNjaGVkdWxlcy4gCiAgIyMgRm9y IHN0YW5kYXJkIGRlZHVjdGlvbiwgc2VlIGh0dHA6Ly93d3cuMTA0MC5jb20vc3RkZGVkdWN0MDQu Y2ZtCgoKICAjIyAyMDA0OiAKCiAgIyMgaHR0cDovL3RheGd1cnUub3JnL2luY29tZXRheC9SYXRl cy8xMDQwLTA0Lmh0bQoKICB5bnVtdGF4YnJhY2tldHMoMjAwNCk9NjsKICAjIyBzaW5nbGU6ICAK ICB5dGF4YnJhY2tldHMoMjAwNCwxOjYsMSk9WzAgNzE1MCAyOTA1MCA3MDM1MCAxNDY3NTAgMzE5 MTAwXTsKICB5dGF4cmF0ZXMoMjAwNCwxOjYsMSk9WzEwIDE1IDI1IDI4IDMzIDM1XTsKCgogICMj IG1hcnJpZWQ6ICAKICB5dGF4YnJhY2tldHMoMjAwNCwxOjYsMik9WzAgMTQzMDAgNTgxMDAgMTE3 MjUwIDE3ODY1MCAzMTkxMDBdOwogIHl0YXhyYXRlcygyMDA0LDE6NiwyKT1bMTAgMTUgMjUgMjgg MzMgMzVdOwoKCgogICMjIG1hcnJpZWQgZmlsaW5nIHNlcGFyYXRlbHk6ICAKICB5dGF4YnJhY2tl dHMoMjAwNCwxOjYsMyk9WzAgNzE1MCAyOTA1MCA1ODI2NSA4OTMyNSAxNTk1NTBdOwogIHl0YXhy YXRlcygyMDA0LDE6NiwzKT1bMTAgMTUgMjUgMjggMzMgMzVdOwoKCgogIHlkZWR1Y3Rpb25zKDIw MDQsOik9WzQ4NTAgXCAgIyBzaW5nbGUKCQkgICAgIDk3MDAgXCAgIyMgbWFycmllZCAKCQkgICAg IDQ4NTAgXCAgIyMgbWFycmllZCwgc2VwYXJhdGUKCQkgICAgIDcxNTAgXCAgIyMgaG91c2Vob2xk LCB1bmltcGxlbWVudGVkCgkJICAgICAwXTsgIyMgd2lkb3dlciwgdW5pbXBsZW1lbnRlZC4KICAK ICAKICB5ZXhlbXB0aW9uYW1vdW50cygyMDA0KT0zMTAwOwoKICAKICAjIyBMZXQncyBmaWxsIHRo aXMgaW4gZm9yIDIwMDMgdG9vOiAKICAjIyBodHRwOi8vdGF4Z3VydS5vcmcvaW5jb21ldGF4L1Jh dGVzLzEwNDAtMDMuaHRtCgoKCiAgeW51bXRheGJyYWNrZXRzKDIwMDMpPTY7CiAgIyMgc2luZ2xl OiAgCiAgeXRheGJyYWNrZXRzKDIwMDMsMTo2LDEpPVswIDcwMDAgMjg0MDAgNjg4MDAgMTQzNTAw IDMxMTk1MF07CiAgeXRheHJhdGVzKDIwMDMsMTo2LDEpPVsxMCAxNSAyNSAyOCAzMyAzNV07CgoK ICAjIyBtYXJyaWVkOiAgCiAgeXRheGJyYWNrZXRzKDIwMDMsMTo2LDIpPVswIDE0MDAwIDU2ODAw IDExNDY1MCAxNzQ3MDAgMzExOTUwXTsKICB5dGF4cmF0ZXMoMjAwMywxOjYsMik9WzEwIDE1IDI1 IDI4IDMzIDM1XTsKCgoKICAjIyBtYXJyaWVkIGZpbGluZyBzZXBhcmF0ZWx5OiAgCiAgeXRheGJy YWNrZXRzKDIwMDMsMTo2LDMpPVswIDcwMDAgMjg0MDAgNTczMjUgODczNTAgMTU1OTc1XTsKICB5 dGF4cmF0ZXMoMjAwMywxOjYsMyk9WzEwIDE1IDI1IDI4IDMzIDM1XTsKCgoKICB5ZGVkdWN0aW9u cygyMDAzLDopPVs0NzUwIFwgICMgc2luZ2xlCgkJICAgICA5NTAwIFwgICMjIG1hcnJpZWQgCgkJ ICAgICA0NzUwIFwgICMjIG1hcnJpZWQsIHNlcGFyYXRlCgkJICAgICA3MDAwIFwgICMjIGhvdXNl aG9sZCwgdW5pbXBsZW1lbnRlZAoJCSAgICAgMF07ICMjIHdpZG93ZXIsIHVuaW1wbGVtZW50ZWQu CiAgCiAgCiAgeWV4ZW1wdGlvbmFtb3VudHMoMjAwMyk9MzA1MDsKCgoKICAKICAKICAKICAKCiAg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogICMjIE5FWFQsIFdFIERPIFRIRSBXT1JLLgoKICB0aGlzbnVtdGF4 YnJhY2tldHM9eW51bXRheGJyYWNrZXRzKHllYXIpOwogIGlmIHRoaXNudW10YXhicmFja2V0cz09 MAogICAgZXJyb3IoIk5vIHRheCBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZm9yIHRoZSBnaXZl biB5ZWFyIGZvciB0aGUgZ2l2ZW4gc3RhdHVzLiAiKQogIGVuZGlmCgoKICBpZiAoc3RkcD09MSk7 CiAgICBkZWR1Y3Rpb249eWRlZHVjdGlvbnMoeWVhcixzdGF0dXMpOwogIGVuZGlmCiAgCiAgZXhl bXB0aW9uYW1vdW50PWV4ZW1wdGlvbnMqeWV4ZW1wdGlvbmFtb3VudHMoeWVhcik7IAogIHRheGRp c3AoIiIpOwoKICB0YXhkaXNwKFsiU3VidHJhY3RpbmcgYSBkZWR1Y3Rpb24gb2YgIiBudW0yc3Ry KGRlZHVjdGlvbikgIiBkb2xsYXJzLiJdKTsKICB0YXhkaXNwKFsiU3VidHJhY3RpbmcgIiBudW0y c3RyKGV4ZW1wdGlvbnMpIFwKCSIgZXhlbXB0aW9ucyB0b3RhbGxpbmcgIiBudW0yc3RyKGV4ZW1w dGlvbmFtb3VudCkgIiBkb2xsYXJzLiJdKTsKICAKICB0YXhhYmxlaW5jb21lPWluY29tZS1kZWR1 Y3Rpb24tZXhlbXB0aW9uYW1vdW50OwoKICB0YXhkaXNwKFsiVGhlIHJlbWFpbmluZyBpcyB5b3Vy IFRBWEFCTEUgSU5DT01FOiAiIFwKCW51bTJzdHIodGF4YWJsZWluY29tZSldKTsKCiAgaWYgdGF4 YWJsZWluY29tZTwwOwogICAgdGF4ZGlzcCgiUmVzZXR0aW5nIHRvIHplcm8iKTsKICAgIHRheGFi bGVpbmNvbWU9MDsKICBlbmRpZgogIGZlZHRheD10YXhfZnJvbV9yYXRlcyh0YXhhYmxlaW5jb21l LHl0YXhicmFja2V0cyh5ZWFyLDE6dGhpc251bXRheGJyYWNrZXRzLHN0YXR1cykseXRheHJhdGVz KHllYXIsMTp0aGlzbnVtdGF4YnJhY2tldHMpKTsKICAKCiAgdGF4ZGlzcCgiIik7CiAgdGF4ZGlz cCgiIik7CgogIHRheGRpc3AoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CiAgdGF4ZGlzcChbIioqIEZp bGluZyBzdGF0dXMgd2FzOiAiIG51bTJzdHIoc3RhdHVzKSAiOyBBR0kgd2FzOiAkIiBudW0yc3Ry KGluY29tZSldKTsKICB0YXhkaXNwKFsiKiogTnVtYmVyIG9mIGV4ZW1wdGlvbnMgd2FzOiAiIG51 bTJzdHIoZXhlbXB0aW9ucyldKTsKICBpZiBzdGRwCiAgICB0YXhkaXNwKFsiKiogV2UgdXNlZCBz dGFuZGFyZCBkZWR1Y3Rpb24gKCQiIG51bTJzdHIoZGVkdWN0aW9uKSAiKS4iXSk7CiAgZWxzZQog ICAgdGF4ZGlzcChbIioqIEl0ZW1pemVkIGRlZHVjdGlvbiBhbW91bnQgd2FzICIgbnVtMnN0cihk ZWR1Y3Rpb24pICIuIl0pOwogIGVuZGlmCiAgdGF4ZGlzcChbIioqIFlPVVIgRVNUSU1BVEVEIEZF REVSQUwgSU5DT01FIFRBWCBGT1IgWUVBUiAiIG51bTJzdHIoeWVhcikgIiBXT1VMRCBCRTogIl0p OwogIHRheGRpc3AoWyIqKiAkIiBudW0yc3RyKGZlZHRheCldKTsKICAgIAogIHRheGRpc3AoIioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqIik7CgogIHRheGRpc3AoIiIpOwogIHRheGRpc3AoIiIpOwoKICBpZiAo c3RkcD09MCkmKGRlZHVjdGlvbj49MC4xKmluY29tZS0xMDAwKQogICAgdGF4ZGlzcCgiWW91ciBz dGF0ZSB0YXhlcyBhbmQgb3RoZXIgaXRlbWl6ZWQgZGVkdWN0aW9ucyBtYXkgYmUgcXVpdGUgaGln aC4iKQogICAgdGF4ZGlzcCgiVGhhdCBtaWdodCBtYWtlIGl0ZW1pemluZyB5b3VyIGRlZHVjdGlv bnMgbW9yZSBhcHByb3ByaWF0ZSEiKQogICAgdGF4ZGlzcCgiQWxsIHRoYXQgIGRlcGVuZHMgb24g eW91ciBzdGF0ZSB0YXggIGZvciB5b3VyIHN0YXRlLCBhbmQiKQogICAgdGF4ZGlzcCgieW91ciBh Y3R1YWwgcXVhbGlmaWVkIGV4cGVuc2VzLiAiKQogICAgdGF4ZGlzcCgiIikKICBlbmRpZgoKCiAg CiAgaWYgKHN0YXR1cz09MikKICAgIHJvdGhpcmFsaW1pdD0xNTAwMDA7CiAgZWxzZWlmIChzdGF0 dXM9PTMpCiAgICByb3RoaXJhbGltaXQ9MTAwMDA7CiAgZWxzZQogICAgcm90aGlyYWxpbWl0PTkw MDAwOwogIGVuZGlmCgoKICBpZiAoaW5jb21lPj0oMC45KnJvdGhpcmFsaW1pdC0xMzAwMCkpCiAg ICB0YXhkaXNwKFsiQWxsIGV4Y2VzcyBtb25leSBzaG91bGQgYWx3YXlzIGJlIHN0b3JlZCBhcyBS T1RIIElSQSdzIHVwdG8iOwoJICAgICAidGhlIG1heGltdW0gYWxsb3dlZC4gIjsKCSAgICAgIkhv d2V2ZXIsIGFzIGluY29tZSBncm93cyBiZXlvbmQgOTAwMDAsIHRoYXQgbWF4aW11bSBkZWNyZWFz ZXMuIjsKCSAgICAgIllvdSBzZWVtIHRvIGJlIGFwcHJvYWNoaW5nIHRoYXQgbGltaXQuICIKCSAg ICAgIklmIHNvLCBjb25zaWRlciByZWR1Y2luZyB5b3VyIEFHSSBieSBjb250cmlidXRpbmciOwoJ ICAgICAibW9yZSB0byB5b3VyIDQwMWsuIgoJICAiIlwKCSAgXSk7CiAgZW5kaWYKICAKICBpZiAo c3RhdHVzPT0zKQogICAgdGF4ZGlzcChbIk5vdGUgdGhhdCBJUkEgQ29udHJpYnV0aW9uIG1heGlt dW0gbGltaXRzIGdldCBzaWduaWZpY2FudGx5IjsKCSAgImxvd2VyZWQgZm9yIG1hcnJpZWQgZmls aW5nIHNlcGFyYXRlbHkiXSk7CiAgICB0YXhkaXNwKCIiKTsKICBlbmRpZgogIAoKICB0YXh3YXJu aW5nOwoKZW5kZnVuY3Rpb24KCg== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=tax_married_analysis.m Content-Transfer-Encoding: base64 ZnVuY3Rpb24gdGF4cmF0aW89dGF4X21hcnJpZWRfYW5hbHlzaXM7CiAgCiAgZ2xvYmFsIHRheHZl cmJvc2VwOwoKICB0YXh3YXJuaW5nOwoKICB0YXh2ZXJib3NlcD0wOwoKICB1bndpbmRfcHJvdGVj dAogICAgZmlndXJlKDEpOwogICAgCiAgICAKICAgIGluY29tZXJhbmdlPTEwMDAwOjIwMDAwOjIw MDAwMDsKICAgICMjaW5jb21lcmFuZ2U9MTAwMDA6NjAwMDA6MjAwMDAwOwogICAgcGVyY3Jhbmdl PTA6MTA6MTAwOwogICAgIyNwZXJjcmFuZ2U9MDoyMDoyMDsKICAgIGlsZW49bGVuZ3RoKGluY29t ZXJhbmdlKTsKICAgIHBsZW49bGVuZ3RoKHBlcmNyYW5nZSk7CiAgICBbaWkgcHBdPW1lc2hkb20o aW5jb21lcmFuZ2UscGVyY3JhbmdlKTsKICAgIHRheHJhdGlvPXplcm9zKHBsZW4saWxlbik7Cgog ICAgZGlzcCgiIik7CiAgICBkaXNwKCJUaGlzIGxvb3Agd2lsbCB0YWtlIGEgd2hpbGUsIHBsZWFz ZSB3YWl0LiAiKTsKCiAgICBmb3IgaWN0cj0xOmlsZW47CiAgICAgIGluY29tZT1pbmNvbWVyYW5n ZShpY3RyKTsKICAgICAgdGF4bm9ybWFsPXRheChpbmNvbWUsMik7CiAgICAgIGZvciBwY3RyPTE6 cGxlbjsKCglwZXJjPXBlcmNyYW5nZShwY3RyKTsKCSMjW251bTJzdHIoaW5jb21lKSAiICIgbnVt MnN0cihwZXJjKSAiJSJdCglpMT1pbmNvbWUqcGVyYy8xMDA7CglpMj1pbmNvbWUtaTE7Cgl0YXhz ZXA9dGF4KGkxLDMpK3RheChpMiwzKTsKCXJhdGlvdGhpcz10YXhub3JtYWwvKHRheHNlcCk7Cgl0 YXhyYXRpbyhwY3RyLGljdHIpPXJhdGlvdGhpczsKCWRpc3AoW251bTJzdHIoaW5jb21lKSAiICIg IG51bTJzdHIocGVyYykgIiUgIiAgbnVtMnN0cihyYXRpb3RoaXMpXSk7CglkaXNwKCIiKTsKICAg ICAgZW5kZm9yOwogICAgZW5kZm9yOwoKICAgIG1lc2goaWkscHAsdGF4cmF0aW8pOwogICAgdGl0 bGUoIlBlcmNlbnRhZ2UgbGVzcyB0YXggcGFpZCB3aGVuIGZpbGluZyBqb2ludGx5LiIpOwoKICAg IAoKICAgIGRpc3AoIk9uIHRoZSB6IGF4aXMsIHdlIHBsb3QgdGhlIHJhdGlvIG9mIHRoZSB0b3Rh bCB0YXggcGFpZCB3aGVuIGZpbGluZyIpCiAgICBkaXNwKCJqb2ludGx5LCB0byB0aGUgdG90YWwg dGF4IHBhaWQgd2hlbiBmaWxpbmcgc2VwYXJhdGVseS4gIikKCiAgICBkaXNwKCIiKTsKCiAgICBk aXNwKCJPbiB0aGUgeCBheGlzIGlzIHRoZSB0b3RhbCBpbmNvbWUgb2YgdGhlIGNvdXBsZS4iKQog ICAgZGlzcCgiT24gdGhlIHkgenhpcyBpcyB0aGUgcGVyY2VudGFnZSBvZiB0aGF0IGluY29tZSBl YXJuZWQgYnkgdGhlIGZpcnN0IHBhcnRlciAiKTsKCgogICAgZGlzcCgiQXMgeW91IGNhbiBzZWUs IFNlcGFyYXRlbHkgaXMgYWx3YXlzIHdvcnNlIik7CiAgICBkaXNwKCJleGNlcHQsIGlmIHlvdXIg aW5jb21lcyBhcmUgZXF1YWxseSBiYWxhbmNlZCwiKTsKCgogICAgZGlzcChbIk1BWElNVU0gVEFY UkFUSU8gV0FTICIgbnVtMnN0cihtYXgobWF4KHRheHJhdGlvKSkpXSk7CiAgdW53aW5kX3Byb3Rl Y3RfY2xlYW51cDsKICAgIHRheHZlcmJvc2VwPTE7CiAgICAKICAgIHRheHdhcm5pbmc7CiAgZW5k X3Vud2luZF9wcm90ZWN0OwogIHRheHZlcmJvc2VwPTE7CgplbmRmdW5jdGlvbgogIAo= --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=taxwarning.m Content-Transfer-Encoding: base64 ZnVuY3Rpb24gd2FybmluZz10YXh3YXJuaW5nKCk7CiAgZ2xvYmFsIHRheHZlcmJvc2VwPTE7CiAg IyMgUHJpbnQgb3V0IGEgbm8gd2FycmFudHkgdGF4IHdhcm5pbmcuICAgCiAgIyMKICAjIyBDb3B5 cmlnaHQgKEMpIDIwMDQgYW5kIG9ud2FyZHMgRC4gR29lbAogICMjIFRoaXMgZmlsZSBpcyBOT1Qg KHlldCkgcGFydCBvZiBPY3RhdmUuCiAgIyMKICAjIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICAjIyB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICMj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5 b3VyIG9wdGlvbikKICAjIyBhbnkgbGF0ZXIgdmVyc2lvbi4KICAjIyBUaGlzIHNvZnR3YXJlIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogICMj IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKICAjIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQogICMjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KICAjIwogICMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIyMgYWxvbmcgd2l0aCBPY3RhdmU7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICMjIFNvZnR3YXJlIEZv dW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICMjIDAy MTExLTEzMDcsIFVTQS4KICAjIwogICMjIC0qLSB0ZXhpbmZvIC0qLQogICMjIEBkZWZ0eXBlZm4g e0Z1bmN0aW9uIEZpbGV9IHt9IG5hbWVfb2ZfZnVuY3Rpb24gKEB2YXJ7YXJnMX0sIEB2YXJ7YXJn Mn0pCiAgIyMgRG9lcyBmb28gYmFyLiAKICAjIyBJZiBAdmFye2FyZzF9IGlzIG5vdCBzcGVjaWZp ZWQgaXQgZGVmYXVsdHMgdG8gMCwgOCBvciAxNiBkZXBlbmRpbmcgb24gCiAgIyMgS2V5d29yZHM6 IAogICMjIEBlbmQgZGVmdHlwZWZuCiAgIyMgQHNlZWFsc297ZnVuY3Rpb24xLCBmdW5jdGlvbjIs IGZ1bmN0aW9uM30KICAjIwogICMjIEF1dGhvcjogRC4gR29lbCA8ZGVlZ29AZ251ZmFucy5vcmc+ CiAgIyMgQ3JlYXRlZDogMTggRGVjIDIwMDQKICAjIyBBZGFwdGVkLUJ5OiAKCiAgdGF4ZGlzcCgi Iik7CiAgd2FybmluZz0gXAogICAgICBbXAogICAgICAgIiIKICAgICAgICItLS0tLS0tLS0tLS0t LS0tLS0tLS0gV0FSTklORyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCiAgICAgICAi VEhJUyBTT0ZUV0FSRSBJUyBOT1QgVE8gQkUgVVNFRCBGT1IgQU5ZIFNPUlQgT0YgVEFYIEFEVklD RS4iCiAgICAgICAiVEhJUyBTT0ZUV0FSRSBJUyBKVVNUIEEgRlVOIE9QRU4gU09VUkNFIEhPQkJZ LiIKICAgICAgICJGT1IgUFJPUEVSIFRBWCBIRUxQLCBQTEVBU0UgQ09OU1VMVCBBIFRBWCBQUk9G RVNTSU9OQUwuIgogICAgICAgIlRoaXMgaXMgYW4gaW4tZGV2ZWxvcG1lbnQgc29mdHdhcmUsIHBy b2JhYmx5IHZlcnkgYnVnZ3kuIgogICAgICAgIkV2ZW4gaWYgdGhpcyBzb2Z0d2FyZSBXRVJFIGNv bXBsZXRlbHkgYnVnLWZyZWUsIGl0IGlzIgogICAgICAgInN0aWxsIElOQ09SUkVDVCAtLS0gIgog ICAgICAgIlRoZSBjb3JyZWN0IHRheCBpcyB0aGUgcm91bmRlZCBmaWd1cmUgb2J0YWluZWQgZnJv bSB0aGUgdGF4LXRhYmxlcyByYXRoZXIgdGhhbiIKICAgICAgICJmcm9tIGZvcm11bGFzLCBhcyBp cyBkb25lIGhlcmUuIgogICAgICAgIiIKICAgICAgICJGb3IgaGlnaCBpbmNvbWVzLCB0aGUgZXhl bXB0aW9uIGFtb3VudHMgYWN0dWFsbHkgcGhhc2Ugb3V0LiBUaGlzIgogICAgICAgInNvZnR3YXJl IERPRVMgTk9UIGltcGxlbWVudCB0aGF0IHlldC4gIgogICAgICAgIlRoaXMgc29mdHdhcmUgRE9F UyBOT1QgY29uc2lkZXIgdGhlIEFsdGVybmF0ZSBNaW5pbXVtIFRheC4iCiAgICAgICAiVGhpcyBz b2Z0d2FyZSBET0VTIE5PVCBldmFsdWF0ZSB0aGluZ3MgbGlrZSBwb3NzaWJpbGl0eSBvZiIKICAg ICAgICJFYXJuZWQgSW5jb21lICBUYXgsIEhvcGUvTGlmZXRpbWUgTGVhcm5pbmcgQ3JlZGl0LCBl dGMuICIKICAgICAgICJUaGlzIHNvZnR3YXJlIERPRVMgTk9UIGRlYWwgd2l0aCBub25yZXNpZGVu dHMgb3IgcGFydGlhbCB5ZWFyIgogICAgICAgInJlc2lkZW50IHN0YXR1c2VzLiAiCiAgICAgICAi SWYgb3ZlciA2NSBvciBibGluZCwgeW91IHdvdWxkIGdldCBhIGhpZ2hlciBzdGFuZGFyZCBkZWR1 Y3Rpb24uICIKICAgICAgICJUaGlzIHNvZnR3YXJlIERPRVMgTk9UIGltcGxlbWVudCB0aGF0LiAi CiAgICAgICAiSW5jb21lIGZyb20gZGl2aWRlbmRzIGFuZCBsb25nLXRlcm0gY2FwaXRhbCBnYWlu cyBpcyB0YXhlZCBhdCBsb3dlciBicmFja2V0cywiCiAgICAgICAiYnV0IE5PVCBJTVBMRU1FTlRF RCBoZXJlLiAiCiAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORCBPRiBXQVJOSU5HIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIgogICAgICAgXTsKCgoKICB0YXhkaXNwKHdhcm5pbmcpOwoK ICB0YXhkaXNwKCIiKTsKCmVuZGZ1bmN0aW9uCg== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=taxdisp.m function rett=taxdisp(arg) global taxverbosep=1; if taxverbosep; disp(arg) endif rett=arg; endfunction --=-=-=--