public static double CalculateMonthlyRepayment(double initialRate, decimal borrowingAmount, int? remainingTerm)
var monthlyRate = Convert.ToDecimal(initialRate / 100 / 12);
Console.WriteLine(initialRate);
Console.WriteLine(monthlyRate);
result = Convert.ToDouble(borrowingAmount / remainingTerm);
result = Convert.ToDouble(borrowingAmount * monthlyRate) / (1 - Math.Pow(1 + Convert.ToDouble(monthlyRate), -1 * remainingTerm.GetValueOrDefault()));
return Convert.ToDouble(Math.Round(result, 2, MidpointRounding.ToEven));
public static decimal CalculateTotalPayment(int dealPeriod, double monthlyRepayment)
return Convert.ToDecimal(Math.Round(dealPeriod * 12 * monthlyRepayment, 2));
public static void Main()
Console.WriteLine("Hello World");
Console.WriteLine(CalculateMonthlyRepayment(0, 100000, 300));
Console.WriteLine("------");
Console.WriteLine(CalculateMonthlyRepayment(0.0, 100000, 300));
Console.WriteLine("------");
Console.WriteLine(CalculateMonthlyRepayment(1, 100000, 300));