#!/usr/local/bin/perl # canadian payemnts using table from Pat Pelletier print <Canadian Mortgage Calculator

Canadian Mortgage Payment Table

Header $args = $ENV{'QUERY_STRING'}; $args =~ s/\+/ /g; $args =~ s/%([\da-f]{1,2})/pack(C,hex($1))/eig; if (length($args) < 2) { print < Calculate your Mortgage Payments page of Pat Pelletier. The reverse formula is from Mike Morley.
This assumes semi-annual compounding.

Enter your :

Your interest rate:

Length of mortgage:


Hugh Chou
EmptyForm } else { # for 7.0, 7.25, ... 11.75 @ir=(7.01,7.16,7.32,7.48, 7.632,7.792,7.954,8.116, 8.280,8.444,8.610,8.778, 8.845,9.114,9.283,9.454, 9.625,9.798,9.971,10.144); @f = split("&",$args); for ($i=0; $i<4; $i++) { $av = @f[$i]; if ($av =~ /^Q/) { $type = substr($av,2); } if ($av =~ /^amt/) { $amt = substr($av,4); } if ($av =~ /^int/) { $int = substr($av,4); } if ($av =~ /^len/) { $len = substr($av,4); } } $thou = $amt/1000; $mr = ((1 + $int/200)**(1/6)) - 1; $us_equiv = 12 * $mr; printf("

US equiv rate: %6.3f %%
\n",$us_equiv*100); if ($type =~ /Loan/) { $pymt2 = $amt * ( $mr / (1 - (1 + $mr) ** -(12 * $len))); print "(For a loan of \$ $amt at a interest rate of $int %\n"; print "for $len years)\n"; print "

Your monthly payment is:

\n"; printf("

Calculated payment: \$ %7.2f

\n",$pymt2 + .0049); $tpay = $pymt2 * $len * 12; $tint = $tpay - $amt; printf("

Total payments : \$ %10.2f\n",$tpay); printf("

Total interest paid: \$ %10.2f\n",$tint); print "


Back to Canadian Mortgage Form\n"; } else { $prin = ($amt/((((1+$int/200)**(1/6)-1))/(1-(((1+$int/200)**(1/6)))**-($len*12)))); print "(For a monthly payment of \$ $amt at a interest rate of $int %\n"; print "for $len years)\n"; printf ("

Your Loan Amount is: \$ %10.2f

\n",$prin); $tpay = $amt * $len * 12; $tint = $tpay - $prin; printf("

Total payments : \$ %10.2f\n",$tpay); printf("

Total interest paid: \$ %10.2f\n",$tint); print "


Back to Canadian Mortgage Form\n"; } }