Ошибка форматирования цены товара

Очередная штатная ошибка, которая не понятно почему до сих пор никем не была замечена.
В user.js есть JS-функция _formatPrice, она форматирует цену товара исходя из заданного округления валюты.
Эта функция выводит цену товара как минимум в категории и подробном описании.
Округление валюты в админке мы можем задать как угодно. Положительным числом (сколько знаков ПОСЛЕ запятой) или отрицательным числом (сколько знаков ПЕРЕД запятой). Скажем, при заданном округлении "-1" цена "127.16" должна округлиться до "130". Но эта функция берет округление ПО МОДУЛЮ! Без учета знака! Т.е. "-1" ничем не отличается от "1" и "127.16" будет округлено до "127.2". Что и было замечено одним из клиентов.

Исправление:

function _formatPrice( number, decimals, dec_point, thousands_sep ) {
// BEGIN исправление ошибки при "отрицательном" округлении в настройке валют
    var c = Math.pow(10,decimals);
    var s = Math.round(number*c)/c;
    s = s.toString();
    var d = (s.split("."))[1];
    s = (s.split("."))[0];
    var t = '';
    thousands_sep = (typeof thousands_sep == "undefined")?' ':thousands_sep;
    dec_point = (typeof dec_point == "undefined")?'.':dec_point;
    for (var i=s.length-1;i>=0;i--)
        {
        t = s.charAt(i)+t;
        if ((s.length-i)%3==0 && i>0) t = thousands_sep+t;
        }
    s = t + ((typeof d == "undefined")?'':(dec_point+d));
/*    
    var n = number, prec = decimals;
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep == "undefined") ? ' ' : thousands_sep;
    var dec = (typeof dec_point == "undefined") ? '.' : dec_point;
 
    var s = (prec > 0) ? n.toFixed(prec) : Math.round(n).toFixed(prec);
 
    var abs = Math.abs(n).toFixed(prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
 
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
*/
// END исправление ошибки при "отрицательном" округлении в настройке валют
    return s;
}