code: public BigMoney rounded(int scale, RoundingMode roundingMode) {
          MoneyUtils.checkNotNull(roundingMode, "RoundingMode must not be null");
          if (scale >= getScale()) {
              return this;
          }
          int currentScale = amount.scale();
          BigDecimal newAmount = amount.setScale(scale, roundingMode).setScale(currentScale);
          return BigMoney.of(currency, newAmount);
      }
docs: Returns a copy of this monetary value rounded to the specified scale without
  changing the current scale.
  <p>
  Scale is described in {@link BigDecimal} and represents the point below which
  the monetary value is zero. Negative scales round increasingly large numbers.
  Unlike {@link #withScale(int)}, this scale of the result is unchanged.
  <ul>
  <li>Rounding 'EUR 45.23' to a scale of -1 returns 40.00 or 50.00 depending on the rounding mode.
  <li>Rounding 'EUR 45.23' to a scale of 0 returns 45.00 or 46.00 depending on the rounding mode.
  <li>Rounding 'EUR 45.23' to a scale of 1 returns 45.20 or 45.30 depending on the rounding mode.
  <li>Rounding 'EUR 45.23' to a scale of 2 has no effect (it already has that scale).
  <li>Rounding 'EUR 45.23' to a scale of 3 has no effect (the scale is not increased).
  </ul>
  This instance is immutable and unaffected by this method.
  
  @param scale  the new scale
  @param roundingMode  the rounding mode to use, not null
  @return the new instance with the amount converted to be positive, never null
  @throws ArithmeticException if the rounding fails