private double WeightedAverageDuration(Loan loan)
        {
            var duration        = 0.0;
            var weightedAverage = loan.GetPayments().Sum(payment => YearsTo(payment.Date, loan) * payment.Amount);
            var sumOfPayments   = loan.GetPayments().Sum(payment => payment.Amount);

            if (loan.GetCommitment() != 0.0)
            {
                duration = weightedAverage / sumOfPayments;
            }

            return(duration);
        }