Esempio n. 1
0
        public static List <YearPayment> Calculate(List <LoanPayment> payments)
        {
            List <YearPayment> list        = new List <YearPayment>();
            YearPayment        summPayment = null;

            List <LoanPayment> .Enumerator enumerator = payments.GetEnumerator();
            while (true)
            {
                LoanPayment payment = enumerator.MoveNext() ? enumerator.Current : null;
                int         year    = payment == null ? 0 : payment.Month.Year;
                if (payment == null || summPayment == null || summPayment.Year != year)
                {
                    if (summPayment != null)
                    {
                        list.Add(summPayment);
                    }
                    summPayment = payment == null ? null : new YearPayment()
                    {
                        Year = year
                    };
                }
                if (payment == null)
                {
                    break;
                }
                summPayment.Interest  += payment.Interest;
                summPayment.Principal += payment.Principal;
            }
            return(list);
        }
Esempio n. 2
0
        public static List <LoanPayment> Calculate(double loanAmount, double interestRate, double months, DateTime startMonth, out double payment)
        {
            payment = (loanAmount * interestRate) / (1 - Math.Exp((-months) * Math.Log(1 + interestRate)));
            payment = LoanPayment.Trunc2(payment);
            List <LoanPayment> payments = new List <LoanPayment>();
            double             balance  = loanAmount;

            for (int i = 1; i <= (int)months; i++)
            {
                LoanPayment lp = new LoanPayment(balance, payment, i, interestRate, startMonth);
                balance = lp.Balance;
                payments.Add(lp);
                if (lp.Balance <= 0)
                {
                    break;
                }
            }
            payments[payments.Count - 1].UpdateBalance();
            return(payments);
        }