diff --git a/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js b/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js
--- a/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js
+++ b/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js
@@ -139,6 +139,7 @@
               //We could have other taxes based on this, we save tha amount in case it is needed.
               taxeslineAux[taxId] = {};
               taxeslineAux[taxId].amount = new BigDecimal(String(orggross)).multiply(rate);
+              taxeslineAux[taxId].desiredGross = orggross;
               if (!(_.isNull(discountedGross) || _.isUndefined(discountedGross))) {
                 taxeslineAux[taxId].discAmount = new BigDecimal(String(discountedGross)).multiply(rate);
               }
@@ -225,6 +226,10 @@
               }
 
               var amount = OB.DEC.mul(net, rate);
+              var obtainedGross = OB.DEC.add(net, amount);
+              if (taxeslineAux[taxId].desiredGross !== obtainedGross) {
+                amount = OB.DEC.add(amount, OB.DEC.sub(taxeslineAux[taxId].desiredGross, obtainedGross));
+              }
               pricenetcascade = OB.DEC.mul(pricenetAux, rate.add(BigDecimal.prototype.ONE));
 
               taxesline[taxId] = {};
