├── CNAME ├── docs ├── CNAME ├── .DS_Store ├── index.css ├── index.js └── index.html ├── Makefile ├── .gitignore ├── package.json └── readme.md /CNAME: -------------------------------------------------------------------------------- 1 | amt-calculator.com 2 | www.amt-calculator.com -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | amt-calculator.com 2 | www.amt-calculator.com -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lambtron/amt-calculator/HEAD/docs/.DS_Store -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Default. 4 | # 5 | 6 | default: server 7 | 8 | # 9 | # Tasks. 10 | # 11 | 12 | # Install node_modules on your machine. 13 | install: node_modules 14 | 15 | # Install node modules with npm. 16 | node_modules: package.json 17 | @npm install 18 | @touch node_modules 19 | 20 | # Clean. 21 | clean: 22 | rm -rf node_modules 23 | 24 | # Server. 25 | server: 26 | python -m SimpleHTTPServer \ 27 | `open "http://localhost:8000/docs"` 28 | 29 | # 30 | # Phonies. 31 | # 32 | 33 | .PHONY: install 34 | .PHONY: clean 35 | .PHONY: server -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 27 | node_modules -------------------------------------------------------------------------------- /docs/index.css: -------------------------------------------------------------------------------- 1 | 2 | input.underlined { 3 | border: 0px; 4 | border-bottom: 1px solid black; 5 | } 6 | 7 | input:focus { 8 | outline: none; 9 | } 10 | 11 | .dollar:before { 12 | font-size: 1.5rem; 13 | vertical-align: top; 14 | content: '$'; 15 | } 16 | 17 | a.active { 18 | opacity: .5; 19 | } 20 | 21 | 22 | ::-webkit-input-placeholder { /* WebKit browsers */ 23 | color: #A8A8A8; 24 | } 25 | :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ 26 | color: #A8A8A8; 27 | } 28 | ::-moz-placeholder { /* Mozilla Firefox 19+ */ 29 | color: #A8A8A8; 30 | } 31 | :-ms-input-placeholder { /* Internet Explorer 10+ */ 32 | color: #A8A8A8; 33 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "amt-calculator", 3 | "description": "Quick and dirty Alternative Minimum Tax calculation focused on exercising incentive stock options.", 4 | "version": "0.0.1", 5 | "author": "Andy Jiang", 6 | "main": "Makefile", 7 | "scripts": { 8 | "start": "make server" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/lambtron/amt-calculator.git" 13 | }, 14 | "engines": { 15 | "node": "^8.3.0", 16 | "npm": "^5.3.0" 17 | }, 18 | "private": true, 19 | "bugs": { 20 | "url": "https://github.com/lambtron/amt-calculator/issues" 21 | }, 22 | "homepage": "https://github.com/lambtron/amt-calculator#readme", 23 | "license": "MIT" 24 | } 25 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | # How much is your Alternative Minimum Tax? 3 | 4 | If you exercise Incentive Stock Options ("ISOs"), you may be subject to Alternative Minimum Tax ("AMT"). AMT is a parallel tax system imposed on an alternative, more comprehensive measure of income, which includes the unrealized gains of ISO value, with fewer opportunities for deductions. If the calculated AMT exceeds the ordinary income tax, then the AMT amount is used. 5 | 6 | *Note that this is an oversimplified estimate that focuses exclusively on ISOs and their impact on AMT. This is not legal or tax advice. For assistance with your specific situation, please consult a tax lawyer.* 7 | 8 | ## Calculating AMT 9 | 10 | We first start with the adjusted gross income. For the purposes of this back-of-the-envelope estimation, we use the annual gross salary. However, there are many other adjustments that influence this number. Learn more about [determining the adjusted gross income](http://www.investopedia.com/financial-edge/0312/how-to-calculate-agi-for-tax-purposes.aspx). 11 | 12 | To get to the alternative minimum taxable income ("AMTI"), there are many income adjustments applied to the adjusted gross income. This site only considers the value of ISOs when exercised (the fair market value less the strike price). However, [there are many other types of deductions subject to AMT](https://turbotax.intuit.com/tax-tools/tax-tips/IRS-Tax-Return/Alternative-Minimum-Tax--Common-Questions/INF12072.html). 13 | 14 | To calculate the AMT base, we take AMTI and less the AMT exemptions. The actual exemption amount depends on the filing status and total AMTI. Here is the table for determining the exemption amounts for 2016. 15 | 16 | ``` 17 | | Filing Status | Amount | Phase Out | 18 | | ------------------------- | ------- | --------- | 19 | | Single | 70,300 | 500,000 | 20 | | Married | 109,400 | 1,000,000 | 21 | | Married Filing Separately | 54,700 | 500,00 | 22 | ``` 23 | 24 | To prevent upper-income taxpayers from benefiting from the exemption, it "phases out" as AMTI increases. For every $1 beyond the phase out amount, the exemption amount is reduced by $0.25. For example, a single person who has AMTI of $525,000 will only have 70,300 – ((525,000 – 500,000) x 0.25) = 64,050 of exemptions. [Learn more about calculating AMT exemptions](http://amtadvisor.com/AMT_Exemption.html). 25 | 26 | We calculate the tentative minimum tax by applying the AMT rate (either 26% or 28%, depending on the amount) to the AMT base. For 2018, the threshold where the 26 percent AMT tax bracket ends and the 28 percent AMT tax bracket begins is $191,500 for married filing jointly and $95,750 for all other individuals. 27 | 28 | Finally, we compare the tentative minimum tax to the ordinary income tax. Ordinary income tax is calculated based on a varying rates associated with the income, as well as the filing status (the table for 2018 is below). The ultimate payable tax will be the greater of either the tentative minimum tax or the ordinary income tax. 29 | 30 | Here is the table for ordinary income tax brackets. 31 | 32 | ``` 33 | | Rate | Single | Married | Married, Filing Separately | 34 | | ----- | ------- | ------- | -------------------------- | 35 | | 10% | 0 | 0 | 0 | 36 | | 12% | 9,525 | 19,050 | 9,525 | 37 | | 22% | 38,700 | 77,400 | 38,700 | 38 | | 24% | 82,500 | 165,000 | 82,500 | 39 | | 32% | 157,500 | 315,000 | 157,500 | 40 | | 35% | 200,000 | 400,000 | 200,000 | 41 | | 37% | 500,000 | 600,000 | 300,000 | 42 | ``` 43 | 44 | The rate on the left applies to income from that row to the one beneath it. For instance, a single person with $150,000 in income will pay 10% on the first $9,525, 12% on the next $29,175, 22% on the next $43,800, and 24% on the remaining $67,500. 45 | 46 | ## Additional Reading 47 | 48 | - [What Exactly Is The Alternative Minimum Tax (AMT)? (Forbes)](https://www.forbes.com/sites/kellyphillipserb/2017/03/15/what-exactly-is-the-alternative-minimum-tax-amt/#796f48993dc9) 49 | - [Alternative Minimum Tax (AMT) for Individuals (This Matter)](http://thismatter.com/money/tax/alternative-minimum-tax.htm) 50 | - [How Does the Alternative Minimum Tax Work? (Nerdwallet)](https://www.nerdwallet.com/blog/taxes/alternative-minimum-tax-amt/) 51 | - [Alternative Minimum Tax: Common Questions (Turbotax)](https://turbotax.intuit.com/tax-tools/tax-tips/IRS-Tax-Return/Alternative-Minimum-Tax--Common-Questions/INF12072.html) 52 | - [Stock Options and the Alternative Minimum Tax (AMT) (NCEO)](https://www.nceo.org/articles/stock-options-alternative-minimum-tax-amt) 53 | - [What’s your AGI? (CNN Money)](http://money.cnn.com/tmp/networth2.html) 54 | - [How To Calculate AGI For Tax Purposes (Investopedia)](http://www.investopedia.com/financial-edge/0312/how-to-calculate-agi-for-tax-purposes.aspx) 55 | - [The AMT Exemption (AMT Advisor)](http://amtadvisor.com/AMT_Exemption.html) 56 | - [2018 Tax Brackets (Tax Foundation)](https://taxfoundation.org/2018-tax-brackets/) 57 | 58 | ## License 59 | 60 | MIT. 61 | 62 | -------------------------------------------------------------------------------- /docs/index.js: -------------------------------------------------------------------------------- 1 | 2 | 'use strict'; 3 | 4 | (function() { 5 | 6 | // Inputs. 7 | var income = 0; 8 | // var isos = 0; 9 | var strike = 0; 10 | var fmv = 0; 11 | var filingStatus = 'single'; 12 | var maxISOs = 0; 13 | 14 | // Outputs 15 | var bargainElement = 0; 16 | var amti = 0; 17 | var amtexemption = 0; 18 | var amtbase = 0; 19 | var amt = 0; 20 | var ordinaryTax = 0; 21 | var payableTax = 0; 22 | 23 | // Constants for 2016. 24 | var exemption = { 25 | 'single': { 26 | amount: 70300, 27 | phaseout: 500000, 28 | break: 95750 29 | }, 30 | 'married': { 31 | amount: 109400, 32 | phaseout: 1000000, 33 | break: 191500 34 | }, 35 | 'mfs': { 36 | amount: 54700, 37 | phaseout: 500000, 38 | break: 95750 39 | } 40 | }; 41 | var ordinaryTaxRates = { 42 | 'single': { 43 | '10': 0, 44 | '12': 9525, 45 | '22': 38700, 46 | '24': 82500, 47 | '32': 157500, 48 | '35': 200000, 49 | '37': 500000 50 | }, 51 | 'married': { 52 | '10': 0, 53 | '12': 19050, 54 | '22': 77400, 55 | '24': 165000, 56 | '32': 315000, 57 | '35': 400000, 58 | '37': 600000 59 | }, 60 | 'mfs': { 61 | '10': 0, 62 | '12': 9525, 63 | '22': 38700, 64 | '24': 82500, 65 | '32': 157500, 66 | '35': 200000, 67 | '37': 300000 68 | } 69 | } 70 | 71 | 72 | // Calculate bargain element. 73 | // (fmv - strike price) * ISOs exercised 74 | // We pass `isos` into the function to allow for newton's method 75 | function calculateBargainElement(isos) { 76 | return (num(fmv) - num(strike)) * num(isos); 77 | } 78 | 79 | // Calculate amt exemption. 80 | function calculateAmtExemption(amti) { 81 | var ex = exemption[filingStatus]; 82 | var amount = ex.amount; 83 | var deduct = 0; 84 | if (num(amti) > ex.phaseout) deduct += (num(amti) - ex.phaseout) * 0.25; 85 | amount -= deduct; 86 | if (amount > 0) return amount; 87 | return 0; 88 | } 89 | 90 | // Calculate amt. 91 | function calculateAmt(amtbase) { 92 | var ex = exemption[filingStatus]; 93 | if (num(amtbase) > ex.break) return ex.break * 0.26 + (num(amtbase) - ex.break) * 0.28; 94 | if (isNaN(amtbase)) amtbase = 0; 95 | return num(amtbase) * 0.26; 96 | } 97 | 98 | // Calculate ordinary tax. 99 | function calculateOrdinaryTax() { 100 | var inc = num(income) 101 | var ord = ordinaryTaxRates[filingStatus]; 102 | var keys = Object.keys(ord); 103 | var bracket = 0; 104 | var tax = 0; 105 | 106 | // Figure out which bracket we're in. 107 | var i = 0; 108 | while (inc > ord[keys[i]]) { 109 | i++; 110 | } 111 | i--; 112 | 113 | // Calculate it. 114 | tax += (inc - ord[keys[i]]) * num(keys[i]) / 100 115 | i--; 116 | while (i >= 0) { 117 | tax += (ord[keys[i + 1]] - ord[keys[i]]) * num(keys[i]) / 100 118 | i--; 119 | } 120 | 121 | return tax; 122 | } 123 | 124 | // Set the filing status. 125 | document.querySelectorAll('a.filing-status').forEach(function(el) { 126 | el.addEventListener('click', function(e) { 127 | var arr = document.querySelectorAll('a.filing-status'); 128 | var status = e.target.id; 129 | for (var i = 0; i < arr.length; i++) { 130 | if (arr[i].id !== status) removeClass(arr[i], 'active') 131 | else { 132 | addClass(arr[i], 'active'); 133 | filingStatus = status; 134 | } 135 | } 136 | calculate(); 137 | updateHtml(); 138 | }) 139 | }) 140 | 141 | // Calculate everything. 142 | function calculate(isos) { 143 | bargainElement = calculateBargainElement(isos); 144 | amti = num(income) + num(bargainElement); 145 | amtexemption = calculateAmtExemption(num(amti)); 146 | amtbase = num(amti) - num(amtexemption); 147 | amt = calculateAmt(num(amtbase)); 148 | ordinaryTax = calculateOrdinaryTax(); 149 | payableTax = Math.max(num(amt), num(ordinaryTax)) 150 | } 151 | 152 | // Collect inputs. 153 | function getInputs() { 154 | income = document.getElementById('income').value 155 | strike = document.getElementById('strike').value 156 | // isos = document.getElementById('isos').value 157 | fmv = document.getElementById('fmv').value 158 | } 159 | 160 | // Format inputs. 161 | function formatInputs() { 162 | document.getElementById('income').value = document.getElementById('income').value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ","); 163 | document.getElementById('isos').value = document.getElementById('isos').value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ","); 164 | document.getElementById('strike').value = document.getElementById('strike').value.replace(/\D\./g, ""); 165 | document.getElementById('fmv').value = document.getElementById('fmv').value.replace(/\D\./g, ""); 166 | } 167 | 168 | // Send outputs to HTML elements. 169 | function updateHtml() { 170 | document.getElementById('bargainElement').innerText = numberFormat(bargainElement, ','); 171 | document.getElementById('amti').innerText = numberFormat(amti, ','); 172 | document.getElementById('amtexemption').innerText = numberFormat(amtexemption, ','); 173 | document.getElementById('amtbase').innerText = numberFormat(amtbase, ','); 174 | document.getElementById('amt').innerText = numberFormat(amt, ','); 175 | document.getElementById('ordinaryTax').innerText = numberFormat(ordinaryTax, ','); 176 | document.getElementById('income-output').innerText = document.getElementById('income').value; 177 | document.getElementById('payable-tax').innerText = numberFormat(payableTax, ','); 178 | if (amt > ordinaryTax) { 179 | removeClass(document.getElementById('max-isos-wrapper'), 'dn'); 180 | document.getElementById('max-isos').innerText = numberFormat(maxISOs, ','); 181 | } else { 182 | addClass(document.getElementById('max-isos-wrapper'), 'dn'); 183 | } 184 | } 185 | 186 | // Whenever user key ups on the form. 187 | document.querySelector('form').addEventListener('keyup', function(e) { 188 | getInputs(); 189 | formatInputs(); 190 | var isos = document.getElementById('isos').value; 191 | calculate(isos); 192 | maxISOs = findISOs(isos); 193 | updateHtml(); 194 | }) 195 | 196 | // Format numbers. 197 | function numberFormat(number, _sep) { 198 | var _number = number; 199 | _number = typeof _number != "undefined" && _number > 0 ? _number : ""; 200 | _number = '' + Math.round(_number); 201 | _number = _number.replace(new RegExp("^(\\d{" + (_number.length%3? _number.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim(); 202 | if (typeof _sep != "undefined" && _sep != " ") _number = _number.replace(/\s/g, _sep); 203 | return _number; 204 | } 205 | 206 | // Turn string to number. 207 | function num(string) { 208 | if (typeof string === 'undefined') return 0; 209 | if (typeof string === 'number') return string; 210 | string = string.replace(/\,/g,''); 211 | return parseFloat(string, 10); 212 | } 213 | 214 | /** 215 | * Netown's method to approximate ISO shares where Ordinary Tax equals AMT 216 | */ 217 | 218 | function findISOs(isos) { 219 | var tempMaxISOs = num(isos); 220 | var discrepancy = amt - ordinaryTax; 221 | 222 | var counter = 0; 223 | 224 | var upper = num(isos); 225 | var lower = 0; 226 | 227 | // Iterate until discrepancy is less than 100. 228 | while (Math.abs(discrepancy) > 10) { 229 | // Not the most intelligent routing of seeding ISOs. 230 | if (discrepancy > 0) { 231 | upper = tempMaxISOs; 232 | tempMaxISOs = (upper + lower) / 2; 233 | } 234 | if (discrepancy < 0) { 235 | lower = tempMaxISOs; 236 | tempMaxISOs = (upper + lower) / 2; 237 | } 238 | 239 | var bargainElement = calculateBargainElement(tempMaxISOs); 240 | var amti = num(income) + num(bargainElement); 241 | var amtexemption = calculateAmtExemption(num(amti)); 242 | var amtbase = num(amti) - num(amtexemption); 243 | var newAmt = calculateAmt(num(amtbase)); 244 | 245 | discrepancy = newAmt - ordinaryTax; 246 | 247 | // console.log('counter %d, discrepancy %d, isos %d', counter, discrepancy, tempMaxISOs) 248 | 249 | counter++; 250 | if (counter > 100) break; 251 | } 252 | 253 | return tempMaxISOs; 254 | } 255 | 256 | /** 257 | * Add class once. 258 | */ 259 | 260 | function addClass(el, c) { 261 | if (el.classList.contains(c)) return; 262 | return el.classList.add(c); 263 | } 264 | 265 | /** 266 | * Remove class once. 267 | */ 268 | 269 | function removeClass(el, c) { 270 | if (el.classList.contains(c)) return el.classList.remove(c); 271 | } 272 | 273 | })() 274 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AMT Calculator 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 31 | 32 | 33 | 34 |
35 |
36 |
37 | How much is your Alternative Minimum Tax? 38 |

39 | If you exercise Incentive Stock Options (“ISOs”), you may be subject to Alternative Minimum Tax (“AMT”). AMT is a parallel tax system imposed on an alternative, more comprehensive measure of income, which includes the unrealized gains of ISO value and fewer opportunities for deductions. If the calculated AMT exceeds the ordinary income tax, then the AMT amount is used. 40 |

41 |

42 | Note that this is an oversimplified estimate that focuses exclusively on ISOs and their impact on AMT. This is not legal or tax advice. For assistance with your specific situation, please consult a tax lawyer. 43 |

44 |
45 |
46 | 47 |
48 |
49 |
50 |

51 | Enter your basic information below to see if you are subject to AMT. 52 |

53 |
54 | Income 55 | $ 56 |
57 |
58 |
59 | # of ISOs Exercised 60 | 61 |
62 |
63 |
64 | Strike Price 65 | $ 66 |
67 |
68 |
69 | 409A Share Value 70 | $ 71 |
72 |
73 |
74 |
Filing Status
75 | Single 76 | Married 77 | Married Filing Separately 78 |
79 |
80 |
81 |
82 | 83 |
84 |
85 |

86 | Given your input, here’s an AMT estimate for 2018. 87 |

88 |
89 | Income 90 | 91 |
92 |
93 | + Adjustment 94 | 95 |
96 |
97 | AMT Income 98 | 99 |
100 |
101 | — AMT Exemption 102 | 103 |
104 |
105 | AMT Base 106 | 107 |
108 |
109 | Tentative Minimum Tax 110 | 111 |
(26% or 28% of AMT base)
112 |
113 |
114 | Ordinary Income Tax 115 | 116 |
117 |
118 | Payable Tax 119 | 120 |
(Greater of tentative minimum tax or ordinary income tax)
121 |
122 |
123 | Max ISOs to avoid AMT 124 | 125 |
(Exercising this many ISOs will not trigger AMT)
126 |
127 |
128 | 129 |
130 |

How to calculate AMT

131 |

132 | We first start with the adjusted gross income. For the purposes of this back-of-the-envelope estimation, we use the annual gross salary. However, there are many other adjustments that influence this number. Learn more about determining the adjusted gross income. 133 |

134 |

135 | To get to the alternative minimum taxable income (“AMTI”), there are many income adjustments applied to the adjusted gross income. This site only considers the value of ISOs when exercised (the most recent 409A appraisal of the stock less the strike price). However, there are many other types of deductions subject to AMT. 136 |

137 |

138 | To calculate the AMT base, we take AMTI and less the AMT exemptions. The actual exemption amount depends on the filing status and total AMTI. Here is the table for determining the exemption amounts for 2018: 139 |

140 |
141 |
142 | Filing Status 143 |
144 |
145 | Amount 146 |
147 |
148 | Phase out 149 |
150 |
151 |
152 |
153 | Single 154 |
155 |
156 | 70,300 157 |
158 |
159 | 500,000 160 |
161 |
162 |
163 |
164 | Married 165 |
166 |
167 | 109,400 168 |
169 |
170 | 1,000,000 171 |
172 |
173 |
174 |
175 | Married, Filing Separately 176 |
177 |
178 | 54,700 179 |
180 |
181 | 500,000 182 |
183 |
184 |

185 | To prevent upper-income taxpayers from benefiting from the exemption, it “phases out” as AMTI increases. For every $1 beyond the phase out amount, the exemption amount is reduced by $0.25. For example, a single person who has AMTI of $525,000 will only have 70,300 – ((525,000 – 500,000) x 0.25) = 64,050 of exemptions. Learn more about calculating AMT exemptions. 186 |

187 |

188 | We calculate the tentative minimum tax by applying the AMT rate (either 26% or 28%, depending on the amount) to the AMT base. For 2018, the threshold where the 26 percent AMT tax bracket ends and the 28 percent AMT tax bracket begins is $95,750 for married filing separately and $191,500 for all other filing statuses. 189 |

190 |
191 |
192 | Filing Status 193 |
194 |
195 | 26%, 28% Threshold 196 |
197 |
198 |
199 |
200 | Single 201 |
202 |
203 | 95,750 204 |
205 |
206 |
207 |
208 | Married 209 |
210 |
211 | 191,500 212 |
213 |
214 |
215 |
216 | Married, Filing Separately 217 |
218 |
219 | 95,750 220 |
221 |
222 |

223 | Finally, we compare the tentative minimum tax to the ordinary income tax. Ordinary income tax is calculated based on a varying rates associated with the income, as well as the filing status (the table for 2018 is below). The ultimate payable tax will be the greater of either the tentative minimum tax or the ordinary income tax. 224 |

225 |

226 | Here is the table for ordinary income tax brackets: 227 |

228 |
229 |
230 | Rate 231 |
232 |
233 | Single 234 |
235 |
236 | Married 237 |
238 |
239 | Married, Filing Separately 240 |
241 |
242 |
243 |
244 | 10% 245 |
246 |
247 | 0 248 |
249 |
250 | 0 251 |
252 |
253 | 0 254 |
255 |
256 |
257 |
258 | 12% 259 |
260 |
261 | 9,525 262 |
263 |
264 | 19,050 265 |
266 |
267 | 9,525 268 |
269 |
270 |
271 |
272 | 22% 273 |
274 |
275 | 38,700 276 |
277 |
278 | 77,400 279 |
280 |
281 | 38,700 282 |
283 |
284 |
285 |
286 | 24% 287 |
288 |
289 | 82,500 290 |
291 |
292 | 165,000 293 |
294 |
295 | 82,500 296 |
297 |
298 |
299 |
300 | 32% 301 |
302 |
303 | 157,500 304 |
305 |
306 | 315,000 307 |
308 |
309 | 157,500 310 |
311 |
312 |
313 |
314 | 35% 315 |
316 |
317 | 200,000 318 |
319 |
320 | 400,000 321 |
322 |
323 | 200,000 324 |
325 |
326 |
327 |
328 | 37% 329 |
330 |
331 | 500,000 332 |
333 |
334 | 600,000 335 |
336 |
337 | 500,000 338 |
339 |
340 |

341 | The rate on the left applies to income from that row to the one beneath it. For instance, a single person with $150,000 in income will pay 10% on the first $9,525, 12% on the next $29,175, 22% on the next $43,800, and 24% on the remaining $67,500. 342 |

343 | 361 |
362 |
363 |
364 | 365 | 366 | 369 | 370 | 371 | 372 | --------------------------------------------------------------------------------