function round(Number, Den, Direction)
{
  var Neg = false;
  var D = 0;	// Denominator
  var N = 0;	// Number
  var W = 0;	// Whole Portion
  var F = 0;	// Fractional Portion

  if (Den == null) D = 10000000000;
  else D = Math.abs(Den);
  if (Number < 0) Neg = true;
  N = Math.abs(Number);
  if ((D > 1) && (N < 1000000000000000))
  {
    W = Math.floor(N);
    F = N - W;
    switch (Direction)
    {
      case 'D':
        F = Math.floor(F * D) / D;
        break;
      case 'U':
        F = Math.ceil(F * D) / D;
        break;
      default:
        F = Math.round(F * D) / D;
    }
    N = W + F;
         if (W < 10) N = Math.round(N * 100000000000000) / 100000000000000;
    else if (W < 100) N = Math.round(N * 10000000000000) / 10000000000000;
    else if (W < 1000) N = Math.round(N * 1000000000000) / 1000000000000;
    else if (W < 10000) N = Math.round(N * 100000000000) / 100000000000;
    else if (W < 100000) N = Math.round(N * 10000000000) / 10000000000;
    else if (W < 1000000) N = Math.round(N * 1000000000) / 1000000000;
    else if (W < 10000000) N = Math.round(N * 100000000) / 100000000;
    else if (W < 100000000) N = Math.round(N * 10000000) / 10000000;
    else if (W < 1000000000) N = Math.round(N * 1000000) / 1000000;
    else if (W < 10000000000) N = Math.round(N * 100000) / 100000;
    else if (W < 100000000000) N = Math.round(N * 10000) / 10000;
    else if (W < 1000000000000) N = Math.round(N * 1000) / 1000;
    else if (W < 10000000000000) N = Math.round(N * 100) / 100;
    else if (W < 100000000000000) N = Math.round(N * 10) / 10;
    else N = Math.round(N);    
  }
  else
  {
    switch (Direction)
    {
      case 'D':
        N = Math.floor(N * D) / D;
        break;
      case 'U':
        N = Math.ceil(N * D) / D;
        break;
      default:
        N = Math.round(N * D) / D;
    }
  }
  if (Neg == true) N = -N;
  return N;
}
