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.parameters.set("STATE_TAX_RATE",0);KJE.parameters.set("MSG_FED_TAX_RATE","Marginal tax rate");KJE.SavingsVariablesCalc=function(){this.NBR_PERIODS=12;this.SCHEDULE_SAVINGS_BF=0;this.SCHEDULE_SAVINGS_AFTI=1;this.SCHEDULE_SAVINGS_INFLATION=2;this.SAVING_INCREASE_PERCENT1=0.1;this.SAVING_INCREASE_PERCENT2=0.15;this.SAVING_INCREASE_PERCENT3=0.25;this.SAVING_INCREASE_PERCENT4=0.5;this.SCHEDULE=this.SCHEDULE_SAVINGS_AFTI;this.cats=null;this.DS_SAVINGS=null;this.DS_AFTI=null;this.DS_AFI=null;this.DS_ENDING_AFT=KJE.FloatArray(1);this.DS_ENDING_AFTI=KJE.FloatArray(1);this.DS_ENDING_BF=KJE.FloatArray(1);this.CS_ENDING=new Array(1);this.MSG_ENDING_BALANCE=KJE.parameters.get("MSG_ENDING_BALANCE","Savings balance after CALC_RESULT years");this.DS_INCREASE_RESULT=KJE.FloatArray(4);this.CS_INCREASE_RESULT=new Array(4);this.MSG_ERROR1=KJE.parameters.get("MSG_ERROR1","Current amount and monthly savings can't both be $0.");this.MSG_TO=KJE.parameters.get("MSG_TO","to");this.sSchedule=new KJE.Repeating()};KJE.SavingsVariablesCalc.prototype.clear=function(){this.YEARS_TO_SAVE=0;this.AMT_CURRENT=0;this.AMT_SAVE_MONTH=0;this.ROR_INVEST=0;this.FED_TAX_RATE=0;this.STATE_TAX_RATE=0;this.INFLATION_RATE=0};KJE.SavingsVariablesCalc.prototype.calculate=function(G){var f=KJE;var v=this.YEARS_TO_SAVE;var u=this.AMT_CURRENT;var m=this.AMT_SAVE_MONTH;var Q=this.ROR_INVEST;var x=this.FED_TAX_RATE;var e=this.STATE_TAX_RATE;var r=this.INFLATION_RATE;if((u<=0)&&(m<=0)){throw (this.MSG_ERROR1)}var d=KJE.ROR_MONTH(Q/100);var s=(Q/100)*((100-x-e)/100);var p=s-(r/100);var o=KJE.ROR_MONTH(s);var c=KJE.FV_AMT(d,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,v*this.NBR_PERIODS,m);var y=KJE.FV_AMT(o,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(o,v*this.NBR_PERIODS,m);var q=KJE.NPV_AMT(r/100,v,y);var A=KJE.NPV_AMT(r/100,v,c);var D=c-y;var t=y-q;var a=c-q;var F=m*(1+this.SAVING_INCREASE_PERCENT1);var E=m*(1+this.SAVING_INCREASE_PERCENT2);var C=m*(1+this.SAVING_INCREASE_PERCENT3);var B=m*(1+this.SAVING_INCREASE_PERCENT4);var l=this.DS_INCREASE_RESULT[0]=KJE.FV_AMT(d,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,v*this.NBR_PERIODS,F);var k=this.DS_INCREASE_RESULT[1]=KJE.FV_AMT(d,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,v*this.NBR_PERIODS,E);var h=this.DS_INCREASE_RESULT[2]=KJE.FV_AMT(d,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,v*this.NBR_PERIODS,C);var g=this.DS_INCREASE_RESULT[3]=KJE.FV_AMT(d,v*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,v*this.NBR_PERIODS,B);var O=l-c;var N=k-c;var M=h-c;var L=g-c;this.CS_INCREASE_RESULT[0]=f.percent(this.SAVING_INCREASE_PERCENT1,0)+" "+this.MSG_TO+" "+f.dollars(F);this.CS_INCREASE_RESULT[1]=f.percent(this.SAVING_INCREASE_PERCENT2,0)+" "+this.MSG_TO+" "+f.dollars(E);this.CS_INCREASE_RESULT[2]=f.percent(this.SAVING_INCREASE_PERCENT3,0)+" "+this.MSG_TO+" "+f.dollars(C);this.CS_INCREASE_RESULT[3]=f.percent(this.SAVING_INCREASE_PERCENT4,0)+" "+this.MSG_TO+" "+f.dollars(B);var j=Math.round(v);var J=0;this.DS_SAVINGS=KJE.FloatArray(j);this.DS_AFTI=KJE.FloatArray(j);this.DS_AFI=KJE.FloatArray(j);this.cats=KJE.FloatArray(j);if(G){var z=this.sSchedule;z.clearRepeat();if(this.SCHEDULE==this.SCHEDULE_SAVINGS_BF){z.addHeader(z.sReportCol("Year",1),z.sReportCol("Interest",2),z.sReportCol("Amount Saved",3),z.sReportCol("Balance",4))}else{if(this.SCHEDULE==this.SCHEDULE_SAVINGS_INFLATION){z.addHeader(z.sReportCol("Year",1),z.sReportCol("Deposits
& Interest",2),z.sReportCol("
Balance",3),z.sReportCol("Inflation
Adjusted",4))}else{z.addHeader(z.sReportCol("Year",1),z.sReportCol("Total
Balance",2),(KJE.bHT?null:z.sReportCol("Balance
after Taxes",3)),(KJE.bHT?z.sReportCol("Value After
Inflation",5):z.sReportCol("Value After
Taxes and Inflation",4)))}}}var P=0;var H=0;var b=0;var K=0;var w=u;for(var I=1;I<=j;I++){J=I-1;this.cats[J]=f.number(I);P=KJE.FV_AMT(d,I*this.NBR_PERIODS,u)+KJE.FV_BEGIN(d,I*this.NBR_PERIODS,m);H=KJE.FV_AMT(o,I*this.NBR_PERIODS,u)+KJE.FV_BEGIN(o,I*this.NBR_PERIODS,m);b=KJE.NPV_AMT(r/100,I,H);K=KJE.NPV_AMT(r/100,I,P);this.DS_SAVINGS[J]=(P);this.DS_AFTI[J]=(b);this.DS_AFI[J]=(K);if(G){if(this.SCHEDULE==this.SCHEDULE_SAVINGS_BF){z.addRepeat(this.cats[J],f.dollars(P-w-this.NBR_PERIODS*m),f.dollars(this.NBR_PERIODS*m),f.dollars(P))}else{if(this.SCHEDULE==this.SCHEDULE_SAVINGS_INFLATION){z.addRepeat(this.cats[J],f.dollars(P-w),f.dollars(P),f.dollars(K))}else{z.addRepeat(this.cats[J],f.dollars(P),(KJE.bHT?null:f.dollars(H)),f.dollars(b))}}}w=P}this.DS_ENDING_BF[0]=(P);this.DS_ENDING_AFT[0]=(H);this.DS_ENDING_AFTI[0]=(b);this.CS_ENDING[0]=KJE.replace("CALC_RESULT",f.number(v),this.MSG_ENDING_BALANCE);this.ROR_PERIOD_PERC=d;this.AMOUNT_SAVED_BTI=c;this.AMOUNT_SAVED_AFT=y;this.AMOUNT_SAVED_AFTI=q;this.ROR_PERIOD_PERC_AFT=o;this.ROR_PERC_AFT=s;this.AMOUNT_REDUCED_BY_TAXES=D;this.AMOUNT_REDUCED_BY_INFLATION=t;this.AMOUNT_REDUCED_BY_TAXES_AND_INFLATION=a;this.ROR_PERC_AFTI=p;this.SAVING_INCREASE_AMT1=F;this.SAVING_INCREASE_AMT2=E;this.SAVING_INCREASE_AMT3=C;this.SAVING_INCREASE_AMT4=B;this.SAVING_INCREASE_RESULT1=l;this.SAVING_INCREASE_RESULT2=k;this.SAVING_INCREASE_RESULT3=h;this.SAVING_INCREASE_RESULT4=g;this.SAVING_DIFF_RESULT1=O;this.SAVING_DIFF_RESULT2=N;this.SAVING_DIFF_RESULT3=M;this.SAVING_DIFF_RESULT4=L;this.AMOUNT_SAVED_AFI=A};KJE.SavingsVariablesCalc.prototype.formatReport=function(b){var c=KJE;var a=this.iDecimal;var d=b;d=KJE.replace("AMT_CURRENT",c.dollars(this.AMT_CURRENT),d);d=KJE.replace("YEARS_TO_SAVE",c.number(this.YEARS_TO_SAVE),d);d=KJE.replace("AMT_CURRENT",c.dollars(this.AMT_CURRENT),d);d=KJE.replace("AMT_SAVE_MONTH",c.dollars(this.AMT_SAVE_MONTH),d);d=KJE.replace("ROR_INVEST",c.percent(this.ROR_INVEST/100,2),d);d=KJE.replace("FED_TAX_RATE",c.percent(this.FED_TAX_RATE/100,2),d);d=KJE.replace("STATE_TAX_RATE",c.percent(this.STATE_TAX_RATE/100,2),d);d=KJE.replace("INFLATION_RATE",c.percent(this.INFLATION_RATE/100,2),d);d=KJE.replace("ROR_PERIOD_PERC",c.percent(this.ROR_PERIOD_PERC,2),d);d=KJE.replace("AMOUNT_SAVED_BTI",c.dollars(this.AMOUNT_SAVED_BTI),d);d=KJE.replace("AMOUNT_SAVED_AFTI",c.dollars(this.AMOUNT_SAVED_AFTI),d);d=KJE.replace("AMOUNT_SAVED_AFT",c.dollars(this.AMOUNT_SAVED_AFT),d);d=KJE.replace("ROR_PERIOD_PERC_AFT",c.percent(this.ROR_PERIOD_PERC_AFT,2),d);d=KJE.replace("ROR_PERC_AFTI",c.percent(this.ROR_PERC_AFTI,2),d);d=KJE.replace("ROR_PERC_AFT",c.percent(this.ROR_PERC_AFT,2),d);d=KJE.replace("AMOUNT_REDUCED_BY_TAXES_AND_INFLATION",c.dollars(this.AMOUNT_REDUCED_BY_TAXES_AND_INFLATION),d);d=KJE.replace("AMOUNT_REDUCED_BY_TAXES",c.dollars(this.AMOUNT_REDUCED_BY_TAXES),d);d=KJE.replace("AMOUNT_REDUCED_BY_INFLATION",c.dollars(this.AMOUNT_REDUCED_BY_INFLATION),d);d=KJE.replace("SAVING_INCREASE_AMT1",c.dollars(this.SAVING_INCREASE_AMT1),d);d=KJE.replace("SAVING_INCREASE_AMT2",c.dollars(this.SAVING_INCREASE_AMT2),d);d=KJE.replace("SAVING_INCREASE_AMT3",c.dollars(this.SAVING_INCREASE_AMT3),d);d=KJE.replace("SAVING_INCREASE_AMT4",c.dollars(this.SAVING_INCREASE_AMT4),d);d=KJE.replace("SAVING_INCREASE_RESULT1",c.dollars(this.SAVING_INCREASE_RESULT1),d);d=KJE.replace("SAVING_INCREASE_RESULT2",c.dollars(this.SAVING_INCREASE_RESULT2),d);d=KJE.replace("SAVING_INCREASE_RESULT3",c.dollars(this.SAVING_INCREASE_RESULT3),d);d=KJE.replace("SAVING_INCREASE_RESULT4",c.dollars(this.SAVING_INCREASE_RESULT4),d);d=KJE.replace("SAVING_DIFF_RESULT1",c.dollars(this.SAVING_DIFF_RESULT1),d);d=KJE.replace("SAVING_DIFF_RESULT2",c.dollars(this.SAVING_DIFF_RESULT2),d);d=KJE.replace("SAVING_DIFF_RESULT3",c.dollars(this.SAVING_DIFF_RESULT3),d);d=KJE.replace("SAVING_DIFF_RESULT4",c.dollars(this.SAVING_DIFF_RESULT4),d);d=KJE.replace("SAVING_INCREASE_PERCENT1",c.percent(this.SAVING_INCREASE_PERCENT1),d);d=KJE.replace("SAVING_INCREASE_PERCENT2",c.percent(this.SAVING_INCREASE_PERCENT2),d);d=KJE.replace("SAVING_INCREASE_PERCENT3",c.percent(this.SAVING_INCREASE_PERCENT3),d);d=KJE.replace("SAVING_INCREASE_PERCENT4",c.percent(this.SAVING_INCREASE_PERCENT4),d);d=KJE.replace("AMOUNT_SAVED_AFI",c.dollars(this.AMOUNT_SAVED_AFI),d);d=d.replace("**REPEATING GROUP**",this.sSchedule.getRepeat());this.sSchedule.clearRepeat();return d};KJE.CalcName="Savings, Taxes, and Inflation Calculator (Canadian)";KJE.CalcType="CASavingsVariables";KJE.CalculatorTitleTemplate="After KJE1 years you could have KJE2.";KJE.parseInputs=function(a){return a};KJE.initialize=function(){KJE.CalcControl=new KJE.SavingsVariablesCalc();KJE.GuiControl=new KJE.SavingsVariables(KJE.CalcControl)};KJE.SavingsVariables=function(i){var f=KJE;var b=KJE.gLegend;var g=KJE.inputs.items;KJE.NumberSlider("YEARS_TO_SAVE","Years",1,45,0);KJE.Slider("AMT_CURRENT","Amount currently invested",0,10000000,0,KJE.FMT_DOLLARS,1,KJE.s_label[4],KJE.useScale(4));KJE.DollarSlider("AMT_SAVE_MONTH","Monthly contributions",0,20000);KJE.InvestRateSlider("ROR_INVEST","Expected rate of return");KJE.PercentSlider("FED_TAX_RATE","Federal tax rate",0,100,1);KJE.PercentSlider("STATE_TAX_RATE","State tax rate",0,100,1);KJE.InflationRateSlider("INFLATION_RATE","Expected inflation rate");this.MSG_GRAPH2=KJE.parameters.get("MSG_GRAPH2",(!i.bHT?"Ending balance with no taxes or inflation":"Ending balance without inflation"));this.MSG_GRAPH3=KJE.parameters.get("MSG_GRAPH3",(!i.bHT?"Ending balance with taxes and inflation":"Ending balance with inflation"));var h=KJE.gNewGraph(KJE.gCOLUMN,"GRAPH1",true,false,KJE.colorList[1],KJE.parameters.get("MSG_GRAPH_TITLE","Balance by Year"));h._legend._iOrientation=(b.BOTTOM);h._showItemLabelOnTop=true;h._axisX._fSpacingPercent=0.1;h._titleXAxis.setText("");var d=1;if(i.bHT){g.FED_TAX_RATE.hide();g.STATE_TAX_RATE.hide()}var a=KJE.parameters.get("MSG_DROPPER_TITLE","Savings, Taxes, and Inflation Inputs:");var c=KJE.parameters.get("MSG_DROPPER_CLOSETITLE","Total savings KJE1");var e=function(){return a};KJE.addDropper(new KJE.Dropper("INPUTS",true,e,e),KJE.colorList[0])};KJE.SavingsVariables.prototype.setValues=function(b){var a=KJE.inputs.items;b.YEARS_TO_SAVE=a.YEARS_TO_SAVE.getValue();b.AMT_CURRENT=a.AMT_CURRENT.getValue();b.AMT_SAVE_MONTH=a.AMT_SAVE_MONTH.getValue();b.ROR_INVEST=a.ROR_INVEST.getValue();b.FED_TAX_RATE=a.FED_TAX_RATE.getValue();b.STATE_TAX_RATE=a.STATE_TAX_RATE.getValue();b.INFLATION_RATE=a.INFLATION_RATE.getValue();b.SCHEDULE=b.SCHEDULE_SAVINGS_AFTI};KJE.SavingsVariables.prototype.refresh=function(e){var d=KJE;var c=KJE.gLegend;var b=KJE.inputs.items;var a=KJE.gGraphs[0];KJE.setTitleTemplate(d.number(e.YEARS_TO_SAVE),d.dollars(e.AMOUNT_SAVED_BTI));a.removeAll();a.setGraphCategories(e.cats);a._showItemLabel=(e.DS_SAVINGS.length<6);a.add(new KJE.gGraphDataSeries(e.DS_SAVINGS,this.MSG_GRAPH2+" ",a.getColor(1),d.dollars(e.AMOUNT_SAVED_BTI),this.MSG_GRAPH2+" "+KJE.MSG_YEAR_LBL));a.add(new KJE.gGraphDataSeries(e.DS_AFTI,this.MSG_GRAPH3+" ",a.getColor(3),d.dollars(e.AMOUNT_SAVED_AFTI),this.MSG_GRAPH3+" "+KJE.MSG_YEAR_LBL));a.paint()};KJE.InputScreenText="
Amount currently saved: | AMT_CURRENT |
---|---|
Amount to save per month: | AMT_SAVE_MONTH |
Years to save: | YEARS_TO_SAVE |
Annual rate of return: | ROR_INVEST |
Marginal tax rate: | FED_TAX_RATE |
Inflation rate: | INFLATION_RATE |
Total savings after YEARS_TO_SAVE years: | AMOUNT_SAVED_BTI |
Savings after taxes: | AMOUNT_SAVED_AFT |
Savings after inflation and taxes: | AMOUNT_SAVED_AFTI |