]> git.scottworley.com Git - inverse-tax/blobdiff - tax.js
Calculate inverse bounds correctly
[inverse-tax] / tax.js
diff --git a/tax.js b/tax.js
index d9bd34c15b03849b0440ce574469afc2db8f44f6..cd0027a1475930802935b28e34cba14597ea5fa5 100644 (file)
--- a/tax.js
+++ b/tax.js
@@ -61,7 +61,7 @@ function invert(table) {
   // and the calculate the inverse's bounds
 
   const ms = table.map(([start, end, rate]) => 1 - rate);
-  const full_brackets = [[0]].concat(table.map(([start, end, rate]) => (end - start) * rate)).slice(0, table.length);
+  const full_brackets = [0].concat(table.map(([start, end, rate]) => (end - start) * rate)).slice(0, table.length);
   function sum_lower_brackets(remaining_brackets, acc = 0) {
     if (remaining_brackets.length == 0) return [];
     return [acc + remaining_brackets[0]].concat(sum_lower_brackets(remaining_brackets.slice(1), acc + remaining_brackets[0]));
@@ -80,7 +80,7 @@ function invert(table) {
   const inverse_table = table.map(([start, end, rate], i) => {
     const m = ms[i];
     const b = bs[i];
-    return [(start - b) / m, (end - b) / m, m, b];
+    return [m * start + b, m * end + b, m, b];
   });
   return function(net) {
     for (const [start, end, m, b] of inverse_table) {