private decimal CalculateTax(decimal income)
{
decimal incomeTax = 0;
CalculateTaxForBracket(379150.0m, .35m, ref incomeTax, ref income);
CalculateTaxForBracket(174400.0m, .33m, ref incomeTax, ref income);
CalculateTaxForBracket(83600.0m, .28m, ref incomeTax, ref income);
CalculateTaxForBracket(34500.0m, .25m, ref incomeTax, ref income);
CalculateTaxForBracket(8500.0m, .15m, ref incomeTax, ref income);
CalculateTaxForBracket(0.0m, .10m, ref incomeTax, ref income);
return incomeTax;
}
private void CalculateTaxForBracket(decimal taxBraketFloor, decimal taxRate, ref decimal calculatedTaxes, ref decimal remainingIncome)
{
if (remainingIncome > taxBraketFloor)
{
calculatedTaxes = calculatedTaxes + (remainingIncome - taxBraketFloor) * taxRate;
remainingIncome = taxBraketFloor;
}
}