diff --git a/src/main/java/com/threerings/media/util/MathUtil.java b/src/main/java/com/threerings/media/util/MathUtil.java index 734640c0..2b16bad2 100644 --- a/src/main/java/com/threerings/media/util/MathUtil.java +++ b/src/main/java/com/threerings/media/util/MathUtil.java @@ -103,9 +103,7 @@ public class MathUtil /** * Computes the floored division dividend/divisor which - * is useful when dividing potentially negative numbers into bins. For - * positive numbers, it is the same as normal division, for negative - * numbers it returns (dividend - divisor + 1) / divisor. + * is useful when dividing potentially negative numbers into bins. * *

For example, the following numbers floorDiv 10 are: *

@@ -115,7 +113,9 @@ public class MathUtil
      */
     public static int floorDiv (int dividend, int divisor)
     {
-        return ((dividend >= 0) ? dividend : (dividend - divisor + 1))/divisor;
+        return ((dividend >= 0) == (divisor >= 0)) ?
+            dividend / divisor : (divisor >= 0 ?
+                    (dividend - divisor + 1) / divisor : (dividend - divisor - 1) / divisor);
     }
 
     /**