Esempio n. 1
0
        public IEnumerable<Payment> CalculateRepaymentPlan()
        {
            var payments = new List<Payment>();
            decimal monthlyInterest = Interest / 12.0M;
            var terms = RepaymentYears * 12;
            decimal previousValue = Amount;
            var termPayment = Amount/terms;

            for (int period = 1; period < terms + 1; period++)
            {

                var interest = previousValue*monthlyInterest;

                var payment = new Payment()
                {
                    Period = period,
                    TotalAmount = termPayment + interest,
                    InterestAmount = previousValue * monthlyInterest,
                    PaymentAmount = termPayment,
                    RemainingDebt = Amount - payments.Sum(p => p.PaymentAmount) - termPayment
                };

                payments.Add(payment);
                previousValue = previousValue-termPayment;
            }

            return payments;
        }
Esempio n. 2
0
        public IEnumerable<Payment> CalculateRepaymentPlan()
        {
            var payments = new List<Payment>();
            decimal monthlyInterest = Interest / 12;
            double terms = RepaymentYears*12;
            decimal previousValue = Amount;

            for (int period = 1; period < terms+1; period++)
            {

                decimal annuitet = pmt(monthlyInterest, (terms+1) - period, -previousValue, 0, 0);
                decimal currentPaymentAmount = (annuitet - (previousValue*monthlyInterest));

                var payment = new Payment()
                {
                    Period = period,
                    TotalAmount = annuitet,
                    InterestAmount = previousValue*monthlyInterest,
                    PaymentAmount = currentPaymentAmount,
                    RemainingDebt = Amount - payments.Sum(p => p.PaymentAmount) - currentPaymentAmount
                };

                payments.Add(payment);
                previousValue = previousValue + payment.InterestAmount - annuitet;
            }

            return payments;
        }