Home
Search
 
What's New
Index
Books
Links
Q & A
Newsletter
Banners
 
Feedback
Tip Jar
 
C# Helper...
 
XML RSS Feed
Follow VBHelper on Twitter Follow VBHelper on Twitter
 
 
 
MSDN Visual Basic Community
 
 
 
 
 
TitleCalculate how long it will take to pay off a credit card by making minimum payments in Visual Basic .NET
DescriptionThis example shows how to calculate how long it will take to pay off a credit card by making minimum payments in Visual Basic .NET.
Keywordsmathematics, algorithms, finance, credit card, pay off credit card, minimum payments, example, example program, Windows Forms programming, Visual Basic .NET, VB.NET
CategoriesAlgorithms
 

For each month the program:

  • Calculates the payment first. This is either a percent of the balance or the minimum amount, whichever is greater.
  • Calculates interest after the payment is calculated but before it is subtracted from the balance.
  • Adds the interest to the balance.
  • If the payment is greater than the balance, the payment is set equal to the balance.
  • Subtracts the payment from the balance.
  • Displays the results for the month.

This method agrees well with the calculator at Bizrate.com.

The following code does all the work.

 
' Calculate the payments.
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal _
    e As System.EventArgs) Handles btnGo.Click
    ' Get the parameters.
    Dim balance As Decimal = _
        Decimal.Parse(txtInitialBalance.Text, _
        NumberStyles.Any)
    Dim interest_rate As Decimal = _
        Decimal.Parse(txtInterestRate.Text.Replace("%", "")) _
        / 100
    Dim payment_percent As Decimal = _
        Decimal.Parse(txtPaymentPercent.Text.Replace("%", _
        "")) / 100
    Dim min_payment As Decimal = _
        Decimal.Parse(txtMinPayment.Text, NumberStyles.Any)
    interest_rate /= 12

    txtTotalPayments.Clear()
    Dim total_payments As Decimal = 0

    ' Display the initial balance.
    lvwPayments.Items.Clear()
    Dim new_item As ListViewItem = _
        lvwPayments.Items.Add("0")
    new_item.SubItems.Add("")
    new_item.SubItems.Add("")
    new_item.SubItems.Add(balance.ToString("c"))

    ' Loop until balance == 0.
    Dim i As Integer = 1
    Do While (balance > 0)
        ' Calculate the payment.
        Dim payment As Decimal = balance * payment_percent
        If (payment < min_payment) Then payment = _
            min_payment

        ' Calculate interest.
        Dim interest As Decimal = balance * interest_rate
        balance += interest

        ' See if we can pay off the balance.
        If (payment > balance) Then payment = balance
        total_payments += payment
        balance -= payment

        ' Display results.
        new_item = lvwPayments.Items.Add(i.ToString())
        new_item.SubItems.Add(payment.ToString("c"))
        new_item.SubItems.Add(interest.ToString("c"))
        new_item.SubItems.Add(balance.ToString("c"))

        ' Process the next month.
        i += 1
    Loop

    ' Display the total payments.
    txtTotalPayments.Text = total_payments.ToString("c")
End Sub
 
To model a fixed payment (for example, $200 per month), set Payment % to 0 and set Min Payment to the monthly amount you want to pay.

Note that if you don't rack up this big debt and you put the payments in a savings account or some other investment, then compound interest will work in your favor instead of against you and you'll make money instead of paying out a lot of interest. For an example that calculates compound interest with a monthly investment, see Calculate the future value of a monthly investment with interest in Visual Basic .NET.

Suppose you want to buy something for $5,000.00. Using this example and the default settings, you end up paying $8,109.24 over 138 months. That's an average payment of $58.76, although in fact you pay a lot more in the beginning because your minimum payment is larger when the balance is bigger.

Instead of putting the $5,000.00 on your credit card, suppose you put $60.00 per month in an account that pays 7.00% interest. After only 69 months you would have saved $5,079.20. You would have enough for the $5,000.00 purchase with a little left over in half the time it would have taken you to pay off the credit card debt and with smaller payments initially!

Of course, there are a couple of catches. First, can you find an investment that pays 7.00% these days? If you only get a 1.00% return (which is believable even now), you still raise $5,025.61 in 81 months. That's not as fast but it's still a lot faster than paying off the credit card debt and with smaller contributions.

The moral is that you can save a lot of money if you save up for something instead of buying it on credit. You'll save the interest payments and be finished saving sooner than you would be finished paying off credit card debt.

 
 
 
 
Copyright © 1997-2010 Rocky Mountain Computer Consulting, Inc.   All rights reserved.
  Updated