KJE.Default.MortgageAmt=200000;KJE.Default.HomePrice=220000;KJE.Default.MortgageMin=0;KJE.Default.MortgageMax=100000000;KJE.Default.MortgageTerm=25;KJE.Default.MortgageTermMin=1;KJE.Default.MortgageTermMax=35;KJE.Default.MortgageTermIncrement=5;KJE.Default.MortgageShowAll=true;KJE.Default.MortgageShowAllMax=25;KJE.Default.MortgageTermEnds=5;KJE.Default.MortgageRateMin=1;KJE.Default.MortgageRateMax=25;KJE.Default.RateFix15=4;KJE.Default.RateFix30=4.5;KJE.Default.RateAdj=4;KJE.parameters.set("LOAN_TERM_END",KJE.Default.MortgageTermEnds);KJE.Default.InflationRate=3;KJE.Default.TaxRate=40;KJE.Default.TaxRateRetire=15;KJE.definitions.set("**INFLATION_DEFINITION**","What you expect for the average long-term inflation rate.");KJE.definitions.set("**ROR_DEFINITION**","The actual rate of return is largely dependent on the type of investments you select. For example, for the last thirty years the average annual rate of return for the TSX is about 10%. Savings accounts at a bank or credit union may pay as little as 2% or less. It is important to remember that future rates of return can't be predicted with certainty and that investments that pay higher rates of return are generally subject to higher risk and volatility. The actual rate of return on investments can vary widely over time, especially for long-term investments. This includes the potential loss of principal on your investment.");KJE.CAShouldIRefiCalc=function(){this.MSG_CURRENT_PAYMENT=KJE.parameters.get("MSG_CURRENT_PAYMENT","Current payment");this.MSG_NEW_PAYMENT=KJE.parameters.get("MSG_NEW_PAYMENT","New payment");this.MSG_INCREASE=KJE.parameters.get("MSG_INCREASE","increase");this.MSG_DECREASE=KJE.parameters.get("MSG_DECREASE","decrease");this.MSG_INCREASE1=KJE.parameters.get("MSG_INCREASE1","increase INTEREST_AMT_SAVINGS");this.MSG_DECREASE1=KJE.parameters.get("MSG_DECREASE1","decrease INTEREST_AMT_SAVINGS");this.MSG_INCREASE2=KJE.parameters.get("MSG_INCREASE2","save INTEREST_AMT_SAVINGS in interest");this.MSG_DECREASE2=KJE.parameters.get("MSG_DECREASE2","pay INTEREST_AMT_SAVINGS more in interest");this.MSG_INCREASE3=KJE.parameters.get("MSG_INCREASE3","increase MONTHLY_AMT_SAVINGS");this.MSG_DECREASE3=KJE.parameters.get("MSG_DECREASE3","decrease MONTHLY_AMT_SAVINGS");this.MSG_TITLE="";this.MSG_TITLE_INCREASE=KJE.parameters.get("MSG_TITLE_INCREASE","You could save INTEREST_AMT_SAVINGS in interest");this.MSG_TITLE_DECREASE=KJE.parameters.get("MSG_TITLE_DECREASE","You could pay INTEREST_AMT_SAVINGS more in interest.");this.MSG_BREAK_EVEN1=KJE.parameters.get("MSG_BREAK_EVEN1","With a monthly payment increase, there is no payment break even point.");this.MSG_BREAK_EVEN2=KJE.parameters.get("MSG_BREAK_EVEN2","Refinancing will break even in YOU_WILL_BREAK_EVEN_IN months.");this.MSG_BREAK_EVEN_IMMEDIATE=KJE.parameters.get("MSG_BREAK_EVEN_IMMEDIATE","Refinancing will save you money with the first payment.");this.DS_PAYMENTS=KJE.FloatArray(2);this.DS_INTEREST=KJE.FloatArray(2);this.cats=["Current Mortgage","New Mortgage"];this.cats[0]=KJE.parameters.get("MSG_CAT1",this.cats[0]);this.cats[1]=KJE.parameters.get("MSG_CAT2",this.cats[1]);this.catlabel=["Current Payment","New Payment"];this.catlabel[0]=KJE.parameters.get("MSG_CATLABEL1",this.catlabel[0]);this.catlabel[1]=KJE.parameters.get("MSG_CATLABEL2",this.catlabel[1]);this.sSchedule=new KJE.Repeating()};KJE.CAShouldIRefiCalc.prototype.clear=function(){this.ORIGINAL_LOAN_AMOUNT=0;this.ORIGINAL_RATE=0;this.ORIGINAL_TERM_IN_YEARS=0;this.NUMBER_OF_PAYMENTS_MADE=0;this.NEW_RATE=0;this.NEW_TERM=0;this.CLOSING_COSTS=0;this.PREPAYMENT_COST=0};KJE.CAShouldIRefiCalc.prototype.calculate=function(D){var a=KJE;var s=this.ORIGINAL_LOAN_AMOUNT;var B=this.ORIGINAL_RATE;var H=this.ORIGINAL_TERM_IN_YEARS;var p=this.NUMBER_OF_PAYMENTS_MADE;var g=this.NEW_RATE;var c=this.NEW_TERM;var j=this.CLOSING_COSTS;var h=this.PREPAYMENT_COST;var C=j+h;var f=0;var m=0;var e="";var q=KJE.CAShouldIRefiCalc.getCanadianMonthlyRate;var I=q(B);var G=a.round(KJE.PMT(I/1200,H*12,s),2);var o=0;var M=s;var d=0;var z=0;var A=G;var y=0;var L=0;var r=0;var t=0;var b=1;var J=1;if(D){var x=this.sSchedule;x.clearRepeat();x.addHeader({sCell:KJE._sHeadingUnderline,sContent:x.sReportCol("Original Loan Schedule",7),sFormat:"colspan=6"});x.addHeader(x.sReportCol("Year",1),x.sReportCol("Payments",2),x.sReportCol("Interest",3),x.sReportCol("Equity",4),x.sReportCol("Balance",5),x.sReportCol("Interest Paid",6))}for(var E=1;E<=H*12;E++){o=a.round(I/1200*M,2);d=G-o;M-=d;if(M<0){A+=M;M=0;d=A-o}else{A=G}if(H*12==E){if(M>0.005){A+=M;M=0;d=A-o}else{M=0}}z+=o;y+=d;L+=o;r+=d;t+=o;if(E>p){m+=o}if(E==p){f=M}if((E%12)==0){if(D&&(b==1)){x.addRepeat((J),a.dollars(L+y,2),a.dollars(L,2),a.dollars(y,2),a.dollars(M,2),a.dollars(z,2))}y=0;L=0;J++}}I=q(g);var F=f;var v=a.round(KJE.PMT(I/1200,c*12,F),2);o=0;M=F;A=v;d=0;z=0;y=0;L=0;r=0;t=0;J=1;if(D){x.addHeader({sCell:KJE._sHeadingUnderline,sContent:x.sReportCol("New Loan Schedule",8),sFormat:"colspan=6"});x.addHeader(x.sReportCol("Year",1),x.sReportCol("Payments",2),x.sReportCol("Interest",3),x.sReportCol("Equity",4),x.sReportCol("Balance",5),x.sReportCol("Interest Paid",6))}for(var E=1;E<=c*12;E++){o=a.round(I/1200*M,2);d=v-o;M-=d;if(M<0){A+=M;M=0;d=A-o}else{A=v}if(c*12==E){if(M>0.005){A+=M;M=0;d=A-o}else{M=0}}z+=o;y+=d;L+=o;r+=d;t+=o;if((E%12)==0){if(D&&(b==1)){x.addRepeat((J),a.dollars(L+y,2),a.dollars(L,2),a.dollars(y,2),a.dollars(M,2),a.dollars(z,2))}y=0;L=0;J++}}var K=t;var l=m-K;var k=G-v;var w=(C)/(G-v);var u=l-C;if(l>=0){e=this.MSG_INCREASE2;this.MSG_TITLE=this.MSG_TITLE_INCREASE}else{e=this.MSG_DECREASE2;this.MSG_TITLE=this.MSG_TITLE_DECREASE}e=KJE.replace("INTEREST_AMT_SAVINGS",a.dollars(l<0?l*(-1):l,2),e);this.MSG_TITLE=KJE.replace("INTEREST_AMT_SAVINGS",a.dollars(l<0?l*(-1):l,2),this.MSG_TITLE);this.DS_PAYMENTS[0]=G;this.DS_PAYMENTS[1]=v;this.DS_INTEREST[0]=m;this.DS_INTEREST[1]=K;this.CURRENT_PAYMENT=G;this.CURRENT_BALANCE=f;this.NEW_BALANCE=F;this.NEW_PAYMENT=v;this.REMAINING_INTEREST_ON_CURRENT_MORTGAGE=m;this.INTEREST_ON_NEW_MORTGAGE=K;this.INTEREST_SAVINGS=l;this.MONTHLY_SAVINGS=k;this.YOU_WILL_BREAK_EVEN_IN=w;this.INTEREST_SAVINGS_MSG=e;this.TOTAL_CLOSING_COSTS=C;this.TOTAL_SAVINGS=u;this.MSG_MONTHLY_SAVINGS="";if(this.MONTHLY_SAVINGS<0){this.MSG_MONTHLY_SAVINGS=this.MSG_INCREASE3;this.BREAK_EVEN_IN_MSG=this.MSG_BREAK_EVEN1}else{this.MSG_MONTHLY_SAVINGS=this.MSG_DECREASE3;if(this.YOU_WILL_BREAK_EVEN_IN<=0){this.BREAK_EVEN_IN_MSG=this.MSG_BREAK_EVEN_IMMEDIATE}else{this.BREAK_EVEN_IN_MSG=this.MSG_BREAK_EVEN2}}this.MSG_MONTHLY_SAVINGS=KJE.replace("MONTHLY_AMT_SAVINGS",a.dollars(this.MONTHLY_SAVINGS<0?this.MONTHLY_SAVINGS*(-1):this.MONTHLY_SAVINGS,2),this.MSG_MONTHLY_SAVINGS)};KJE.CAShouldIRefiCalc.prototype.formatReport=function(b){var c=KJE;var a=this.iDecimal;var d=b;d=KJE.replace("ORIGINAL_LOAN_AMOUNT",c.dollars(this.ORIGINAL_LOAN_AMOUNT,2),d);d=KJE.replace("ORIGINAL_RATE",c.percent(this.ORIGINAL_RATE/100,3),d);d=KJE.replace("ORIGINAL_TERM_IN_YEARS",c.number(this.ORIGINAL_TERM_IN_YEARS),d);d=KJE.replace("NUMBER_OF_PAYMENTS_MADE",c.number(this.NUMBER_OF_PAYMENTS_MADE),d);d=KJE.replace("CURRENT_PAYMENT",c.dollars(this.CURRENT_PAYMENT,2),d);d=KJE.replace("CURRENT_BALANCE",c.dollars(this.CURRENT_BALANCE,2),d);d=KJE.replace("NEW_BALANCE",c.dollars(this.NEW_BALANCE,2),d);d=KJE.replace("PREPAYMENT_COST",c.dollars(this.PREPAYMENT_COST,2),d);d=KJE.replace("NEW_RATE",c.percent(this.NEW_RATE/100,3),d);d=KJE.replace("NEW_TERM",c.number(this.NEW_TERM),d);d=KJE.replace("TOTAL_CLOSING_COSTS",c.dollars(this.TOTAL_CLOSING_COSTS,2),d);d=KJE.replace("TOTAL_SAVINGS",(this.TOTAL_SAVINGS<0?this.MSG_INCREASE:this.MSG_DECREASE),d);d=KJE.replace("TOTAL_AMT_SAVINGS",c.dollars(this.TOTAL_SAVINGS<0?this.TOTAL_SAVINGS*(-1):this.TOTAL_SAVINGS,2),d);d=KJE.replace("CLOSING_COSTS",c.dollars(this.CLOSING_COSTS,2),d);d=KJE.replace("NEW_PAYMENT",c.dollars(this.NEW_PAYMENT,2),d);d=KJE.replace("REMAINING_INTEREST_ON_CURRENT_MORTGAGE",c.dollars(this.REMAINING_INTEREST_ON_CURRENT_MORTGAGE,2),d);d=KJE.replace("INTEREST_ON_NEW_MORTGAGE",c.dollars(this.INTEREST_ON_NEW_MORTGAGE,2),d);d=KJE.replace("INTEREST_SAVINGS_MSG",this.INTEREST_SAVINGS_MSG,d);d=KJE.replace("INTEREST_SAVINGS",(this.INTEREST_SAVINGS<0?this.MSG_INCREASE1:this.MSG_DECREASE1),d);d=KJE.replace("INTEREST_AMT_SAVINGS",c.dollars(this.INTEREST_SAVINGS<0?this.INTEREST_SAVINGS*(-1):this.INTEREST_SAVINGS,2),d);d=KJE.replace("MONTHLY_SAVINGS",this.MSG_MONTHLY_SAVINGS,d);d=KJE.replace("MONTHLY_AMT_SAVINGS",c.dollars(this.MONTHLY_SAVINGS<0?this.MONTHLY_SAVINGS*(-1):this.MONTHLY_SAVINGS,2),d);d=KJE.replace("BREAK_EVEN_IN_MSG",this.BREAK_EVEN_IN_MSG,d);d=KJE.replace("YOU_WILL_BREAK_EVEN_IN",c.number(this.YOU_WILL_BREAK_EVEN_IN),d);d=d.replace("**REPEATING GROUP**",this.sSchedule.getRepeat());this.sSchedule.clearRepeat();return d};KJE.CAShouldIRefiCalc.getCanadianMonthlyRate=function(a){return(Math.pow(1+(a/200),(1/6))-1)*1200};KJE.CalcName="Mortgage Refinance Interest Savings Calculator (Canadian)";KJE.CalcType="CAShouldIRefi";KJE.CalculatorTitleTemplate="Refinance Interest Savings";KJE.parseInputs=function(b){b=KJE.replace("**NEW_TERM**",KJE.getMortgageTermDrop("NEW_TERM",KJE.Default.MortgageTerm),b);var a=KJE.getTermChoice("ORIGINAL_TERM_IN_YEARS",KJE.parameters.get("ORIGINAL_TERM_IN_YEARS",KJE.Default.MortgageTerm),KJE.parameters.get("TERM_SHOW_ALL",true),40,40,"",false,true,KJE.Default.MortgageTermMin);b=KJE.replace("**ORIGINAL_TERM_IN_YEARS**",a,b);return b};KJE.initialize=function(){KJE.CalcControl=new KJE.CAShouldIRefiCalc();KJE.GuiControl=new KJE.CAShouldIRefi(KJE.CalcControl)};KJE.CAShouldIRefi=function(k){var e=KJE;var b=KJE.gLegend;var g=KJE.inputs.items;KJE.MortgageAmtSlider("ORIGINAL_LOAN_AMOUNT","Original mortgage balance");KJE.MortgageRateSlider("ORIGINAL_RATE","Original rate");KJE.NumberSlider("NUMBER_OF_PAYMENTS_MADE","Number of payments made",1,360,0);KJE.MortgageRateSlider("NEW_RATE","New rate");KJE.DollarSlider("CLOSING_COSTS","Closing costs",0,100000);KJE.DollarSlider("PREPAYMENT_COST","Prepayment penalties",0,100000);KJE.DropBoxSlider("ORIGINAL_TERM_IN_YEARS","Original amortization",KJE.getTermChoice("",0,KJE.parameters.get("TERM_SHOW_ALL",true),40,40,"",false,false,KJE.Default.MortgageTermMin).v);KJE.MortgageTermDropBoxSlider("NEW_TERM","New amortization");KJE.Label("CURRENT_BALANCE","New mortgage balance");var i=KJE.gNewGraph(KJE.gCATEGORIES,"GRAPH2",true,false,KJE.colorList[1],k.MSG_TITLE_DECREASE);i._legend._iOrientation=(b.TOP_RIGHT);i._showItemLabel=true;i._axisX.setVisible(false);var h=KJE.gNewGraph(KJE.gCATEGORIES,"GRAPH1",true,true,KJE.colorList[1],KJE.parameters.get("MSG_GRAPH_TITLE","Your payment will KJE1 per month"));h._legend._iOrientation=(b.TOP_RIGHT);h._colorList=[KJE.gColorList[2],KJE.gColorList[3]];h._showItemLabel=true;h._axisX.setVisible(false);var a=KJE.parameters.get("MSG_DROPPER_TITLE","Original Mortgage:");var c=KJE.parameters.get("MSG_DROPPER_CLOSETITLE","Monthly payment KJE1");var d=function(){return a+"|"+KJE.subText(KJE.getKJEReplaced(c,e.dollars(k.CURRENT_PAYMENT)),"KJERightBold")};KJE.addDropper(new KJE.Dropper("INPUTS",true,d,d),KJE.colorList[0]);var m=KJE.parameters.get("MSG_DROPPER2_TITLE","New mortgage:");var f=KJE.parameters.get("MSG_DROPPER2_CLOSETITLE","Monthly payment KJE1");var j=function(){return m+"|"+KJE.subText(KJE.getKJEReplaced(f,e.dollars(k.NEW_PAYMENT)),"KJERightBold")};KJE.addDropper(new KJE.Dropper("INPUTS2",true,j,j),KJE.colorList[0])};KJE.CAShouldIRefi.prototype.setValues=function(b){var a=KJE.inputs.items;b.ORIGINAL_TERM_IN_YEARS=a.ORIGINAL_TERM_IN_YEARS.getValue();b.NEW_TERM=a.NEW_TERM.getValue();b.ORIGINAL_LOAN_AMOUNT=a.ORIGINAL_LOAN_AMOUNT.getValue();b.ORIGINAL_RATE=a.ORIGINAL_RATE.getValue();b.NUMBER_OF_PAYMENTS_MADE=a.NUMBER_OF_PAYMENTS_MADE.getValue();b.NEW_RATE=a.NEW_RATE.getValue();b.CLOSING_COSTS=a.CLOSING_COSTS.getValue();b.PREPAYMENT_COST=a.PREPAYMENT_COST.getValue()};KJE.CAShouldIRefi.prototype.refresh=function(f){var e=KJE;var d=KJE.gLegend;var b=KJE.inputs.items;var a=KJE.gGraphs[1];var c=KJE.gGraphs[0];KJE.setTitleTemplate();a.removeAll();a.setGraphCategories(f.catlabel);a.add(new KJE.gGraphDataSeries(f.DS_PAYMENTS,""));a.setTitleTemplate(f.MSG_MONTHLY_SAVINGS);a.paint();c.removeAll();c.setGraphCategories(f.cats);c.add(new KJE.gGraphDataSeries(f.DS_INTEREST,""));c.setTitle(f.MSG_TITLE);c.paint();b.CURRENT_BALANCE.setText(e.dollars(f.CURRENT_BALANCE,2))};KJE.InputScreenText="
Original mortgage amount | ORIGINAL_LOAN_AMOUNT |
---|---|
Number of payments made | NUMBER_OF_PAYMENTS_MADE |
Refinancing Results | |
Remaining interest on current mortgage | REMAINING_INTEREST_ON_CURRENT_MORTGAGE |
Interest on new mortgage | INTEREST_ON_NEW_MORTGAGE |
Total interest paid | INTEREST_SAVINGS |
Closing costs and prepayment penalties | TOTAL_CLOSING_COSTS |
Monthly payment | MONTHLY_SAVINGS per month |
Refinance break even | BREAK_EVEN_IN_MSG |
Total payments | TOTAL_AMT_SAVINGS TOTAL_SAVINGS after closing costs and prepayment penalties |
Original Mortgage | New Mortgage | |
---|---|---|
Mortgage amount | ORIGINAL_LOAN_AMOUNT | CURRENT_BALANCE |
Interest rate | ORIGINAL_RATE | NEW_RATE |
Amortization in years | ORIGINAL_TERM_IN_YEARS | NEW_TERM |
Monthly payment | CURRENT_PAYMENT | NEW_PAYMENT |
Interest payments | REMAINING_INTEREST_ON_CURRENT_MORTGAGE remaining interest | INTEREST_ON_NEW_MORTGAGE total interest |