* @param y
     * @param decimalPlaces
     * @param a_RoundingMode
     * @return x multiplied by y then rounded;
     */
    public static BigDecimal multiplyRoundToFixedDecimalPlaces(
            BigDecimal x,
            BigDecimal y,
            int decimalPlaces,
            RoundingMode a_RoundingMode) {
        // Deal with special cases
        if (x.compareTo(BigDecimal.ONE) == 0) {
            if (y.scale() > decimalPlaces) {
                return roundToAndSetDecimalPlaces(
                        y, decimalPlaces, a_RoundingMode);
            } else {
                return y.setScale(decimalPlaces);
            }
        }
        if (y.compareTo(BigDecimal.ONE) == 0) {
            if (x.scale() > decimalPlaces) {
                return roundToAndSetDecimalPlaces(
                        x, decimalPlaces, a_RoundingMode);
            } else {
                return x.setScale(decimalPlaces);
            }
        }
        if (x.compareTo(BigDecimal.ZERO) == 0
                || (y.compareTo(BigDecimal.ZERO) == 0)) {
            return BigDecimal.ZERO.setScale(decimalPlaces);
        }
        BigDecimal result = x.multiply(y);
        if (result.scale() > decimalPlaces) {
            // RoundingNecessary
            return roundToAndSetDecimalPlaces(
                    result, decimalPlaces, a_RoundingMode);
        } else {
            return result.setScale(decimalPlaces);
        }
    }

//    /**
//     * @param x
//     * @param y
//     * @param decimalPlaces
//     * @param a_RoundingMode
//     * @return x multiplied by y using a_MathContext the result returned is 
//     * rounded to and set to ;
//     */
//    public static BigDecimal multiplyRoundToAndSetDecimalPlaces(
//            BigDecimal x,
//            BigDecimal y,
//            MathContext a_MathContext) {
//        // Deal with special cases?
//        BigDecimal result = x.multiply(y, a_MathContext);
//        int decimalPlaces = 
//                a_MathContext.getPrecision() - 
//                result.toBigInteger().toString().length();
//        return roundToAndSetDecimalPlaces(
//                result, decimalPlaces, a_MathContext.getRoundingMode());
//    }