   (- n (mod n (:step scale))))
 
 (defn- round-up [scale n]
-  (+ n (- (:step scale) (mod (+ n) (:step scale)))))
+  (let [m (mod n (:step scale))]
+    (if (zero? m)
+      (BigDecimal. (str n))
+      (+ n (- (:step scale) (mod n (:step scale)))))))
 
 (defn- max-value [scale point]
   (let [n (+ (value point)

    (is (= [1 1 1 1 1 10 10 10 10 10 -100 -10 -10 1 1 1]
           (traversal-steps 45 -17)))))

(def tests)
(set-test tests
  (testing "tests defined in scale.core itself"

    (test #'scale-index)
    (test #'next-step)
    (test #'scale-point)
    (test #'traversal-steps)
    (test #'round-up)
    (test #'round-down)))
