function rate(brackets, income) {
var taxes = 0;
for (var i = 0; i < brackets.length; ++i) {
if (!brackets[i]) return NaN;
var rate = brackets[i][0],
value0 = brackets[i][1],
value1 = brackets[i + 1] ? brackets[i + 1][1] : Infinity;
if (income <= value0) break;
taxes += (Math.min(value1, income) - value0) * rate;
}
return taxes / income;
}