Round towards the nearest legal value. If the current value is exactly half way between two legal values round towards 0.
(defun round-half-down (number &optional (precision *precision*))
"Round towards the nearest legal value. If the current value is
exactly half way between two legal values round towards 0."
(multiple-value-bind (value discarded)
(floor number)
(if (< 1/2 discarded)
(/ (1+ value) precision)
(/ value precision))))Source Context