added nonNegative for BigDecimal