code: function bcround(val, precision) {
      var x, r;
      x = '0.' + Array(precision+1).join('0') + '5';
      if (val.toString().substring(0, 1) == '-') {
          x = '-' + x;
      }
  
      r = bcadd(val, x, precision);
  
      return r;
  }
docs: bcround - Returns the rounded value of [val] to the specified [precision] (number of digits after the decimal point).
  [precision] can also be a negative or zero (default)
  Note: uses "round up and away from zero" method (ie -1.5 > -2, 1.5 > 2 where .5 always goes to 1 (or 0.5 to -1) etc
  
  @param string val            The value to round (accept in virtually any format)
  @param int    precision      The optional number of digits to round-to
  @return string               In exact decimal places of precision (ie bcround('1.2222', 2) == '1.22' or bcround('1', 4) == '1.0000' )