private void monthlyPaymentSplit() {

        if (fixedMonthlyPayment.equals(INITIAL_PAYMENT_AMT)) {
            calculateMortgage();
        }

        if (fixedMonthlyPayment.equals(INVALID_PAYMENT_AMT)) {
            throw new RuntimeException("Could not calculate monthly payment.");
        }

        // Multiply the loan value by the period interest rate to determine the first month's interest,
        // and then subtract that amount from the monthly payment to get the first month's principal.

        int paymentCount = 0;
        Double totalPrincipalPaid = 0d;
        paymentDetailList.clear();

        while (paymentCount++ < loanDuration.getDurationInMonths()) {

            Double principalLeft = loanAmount - totalPrincipalPaid;

            Double nthMonthInterest = principalLeft * interestRate.getMonthlyInterest();

            Double nthMonthPrincipal = fixedMonthlyPayment - nthMonthInterest;

            totalPrincipalPaid += nthMonthPrincipal;

            AmortizeDetail paymentDetail = PaymentDetailFactory.makePaymentDetail(PaymentDetailFactory.detailType.SIMPLE,
                    paymentCount, fixedMonthlyPayment, nthMonthPrincipal, nthMonthInterest);

            paymentDetailList.add(paymentDetail);
        }
    }