{"id":1416,"date":"2022-08-15T09:33:56","date_gmt":"2022-08-15T13:33:56","guid":{"rendered":"https:\/\/ppta.ca\/tools\/calculer-un-amortissement\/"},"modified":"2022-10-03T14:04:05","modified_gmt":"2022-10-03T18:04:05","slug":"depreciation-calculator","status":"publish","type":"page","link":"https:\/\/ppta.ca\/en\/tools\/depreciation-calculator\/","title":{"rendered":"Depreciation calculator"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row type=&#8221;in_grid&#8221; text_align=&#8221;inherit&#8221; el_class=&#8221;calculateur-row&#8221;][vc_column][vc_row_inner type=&#8221;full_width&#8221; text_align=&#8221;left&#8221; el_class=&#8221;padding-b-50&#8243;][vc_column_inner]<a href=\"\/en\/tools\/\" target=\"_self\" class=\"dist-btn type3\">All tools<\/a>[\/vc_column_inner][\/vc_row_inner][vc_column_text el_class=&#8221;calculateur-toptitle&#8221;]Calculators \u2014 Miscellaneous[\/vc_column_text][vc_column_text el_class=&#8221;text-center&#8221;]<\/p>\n<h2>Depreciation calculator<\/h2>\n<p>[\/vc_column_text][vc_row_inner type=&#8221;full_width&#8221; text_align=&#8221;inherit&#8221; el_class=&#8221;calculateur-inner-row padding-b-120&#8243;][vc_column_inner]<div class=\"dist-shortcode-container wpb_content_element\">\u00a0\n<script type=\"text\/javascript\">\n    \n\nvar bDebug = 0;        \/\/ change to 1 for extra output\nvar bPrincipal = 1;    \/\/ display principal column\nvar sNl = \"\\r\";\nvar sOut = \"\";         \/\/ html output string\nvar nErrorNumber = -1.2345e-12;\nvar bDisplayAverageInterest = 0;\nvar sSub = \"%s\";\n\nvar shStart = \"\";\n\nvar shHeading1 =  \"<TABLE border=0 cellpadding=0 \"\n                + \"cellspacing=0 width=100%>\" + sNl\n      + \"<br><TR><TD align=left>\" + sNl\n      + \"<b>%s<\/b><\/TD><\/TR><\/TABLE>\";\n\nvar shHeadGif = \"<TABLE width=580 cellpadding=0 cellspacing=0>\" + sNl\n      + \"<TR><TD><img src='%s' \" + sNl\n      + \"width=367 height=20><\/TD><\/TR><\/TABLE>\";\n\nvar shHeading2 =  \"<TABLE border=0 cellpadding=0 \"\n                + \"cellspacing=0 width=100%>\" + sNl\n      + \"<br><TR align=center class=table-header><TD>\" + sNl\n      + \"<b>%s<\/b><\/TD><\/TR><\/TABLE>\";\n\nvar shBeginTable1 =\n      \"<TABLE border=0 cellpadding=0 cellspacing=0 width=100%>\";\nvar shBeginTable2 =\n      \"<TABLE border=1 cellpadding=2 cellspacing=0 width=100% class=table-amortissement-result>\";\nvar shEndTable = \"<\/table>\";\n\nvar shBeginRow = \"<tr>\";\nvar shEndRow = \"<\/tr>\";\n\nvar shCell1 = \"<td><b>%s<\/b><\/td>\";\nvar shCell2 = \"<td>%s<\/td>\";\nvar shCell3 = \"<th><b>%s<\/b><\/th>\";\nvar shCell4 = \"<td align='center'>%s\"\n                + \"<\/td>\";\nvar shCell5 = \"<th align='center'>%s\"\n                + \"<\/th>\";\n\nfunction EmitRow1(s1, s2)\n{\n   Emit(shBeginRow);\n   Emit1(shCell1, s1);\n   Emit1(shCell2, s2);\n   Emit(shEndRow);\n}\n\nfunction EmitRow2(s1, s2, sx, s3, s4, s5)\n{\n   Emit(shBeginRow);\n   Emit1(shCell3, s1);\n   Emit1(shCell3, s2);\n   if (bPrincipal)\n      Emit1(shCell3, sx);\n   Emit1(shCell3, s3);\n   Emit1(shCell3, s4);\n   Emit1(shCell3, s5);\n   Emit(shEndRow);\n}\n\nfunction EmitRow3(s1, s2, sx, s3, s4, s5)\n{\n   Emit(shBeginRow);\n   Emit1(shCell2, s1);\n   Emit1(shCell2, s2);\n   if (bPrincipal)\n      Emit1(shCell4, Format(sx, 0, 2));\n   Emit1(shCell4, Format(s3, 0, 2));\n   Emit1(shCell4, Format(s4, 0, 2));\n   Emit1(shCell4, Format(s5, 0, 2));\n   Emit(shEndRow);\n}\n\nfunction EmitRow4(s1, s2, sx, s3, s4, s5)\n{\n   Emit(shBeginRow);\n   Emit1(shCell1, s1);\n   Emit1(shCell1, s2);\n   if (bPrincipal)\n      Emit1(shCell5, Format(sx, 0, 2));\n   Emit1(shCell5, Format(s3, 0, 2));\n   Emit1(shCell5, Format(s4, 0, 2));\n   Emit1(shCell5, Format(s5, 0, 2));\n   Emit(shEndRow);\n}\n\nfunction EmitRow5(s1, s2)\n{\n   Emit(shBeginRow);\n   Emit1(shCell1,s1);\n   Emit1(shCell4, s2);\n   Emit(shEndRow);\n}\n\nfunction Execute(oForm)\n{\n   var iError = 0;\n   var nPrincipal, nInputInterest, iYears, iStartMonth;\n   var iStartYear, bShowFull, iPrepayMethod, nPrepay, iPrepayPeriod;\n   var iPrepayUse, iPpy;\n\n   if ( (nPrincipal = Validate(oForm.apph0001.value, 0)) == nErrorNumber)\n      iError = 100;\n   else if ( (nInputInterest = Validate(oForm.apph0002.value, 0))\n                == nErrorNumber)\n      iError = 110;\n   else if ( (iYears = Validate(oForm.apph0003.value, 1)) == nErrorNumber)\n      iError = 120;\n   else if ( (iStartMonth = parseInt(oForm.apph0004.options[\n        oForm.apph0004.selectedIndex].value)) == 0)\n      iError = 130;\n   else if ( (iStartYear = Validate(oForm.apph0005.value, 1))\n                == nErrorNumber)\n      iError = 140;\n   else\n   {\n      bShowFull = parseInt(oForm.apph0006.options[oForm.apph0006.selectedIndex].value);\n\n      \/\/ var iPpy = parseInt(oForm.apph0007.value);\n      iPpy = 12;\n\n      iPrepayMethod = parseInt(oForm.apph0008.options[oForm.apph0008.selectedIndex].value);\n      if ( (nPrepay = Validate(oForm.apph0009.value, 0)) == nErrorNumber)\n     iError = 150;\n      else if ( (iPrepayPeriod = Validate(oForm.apph0010.value, 1))\n                == nErrorNumber)\n     iError = 160;\n\n      \/\/ var iPrepayUse = parseInt(oForm.apph0011.value);\n      var iPrepayUse = 1;\n                \/\/ 0=reduce payment; 1=pay off early\n   }\n\n   var nHalfPrepay = Round(nPrepay\/2, 2);\n\n   var iMonths = 12 * iYears;\n   var iPeriods = iPpy * iYears;\n   var nPercent = nInputInterest \/ iPpy \/ 100;\n\n   var nPrepayPv = 0, nPayment = 0;\n   var bSemaPrepay = 0, bPeriodPrepay = 0;\n   var bAnnPrepay = 0, bSinglePrepay = 0;\n\n   var sSummPayment = \"N\/A\", sSummInterest1 = \"N\/A\",\n         sSummInterest2 = \"N\/A\", sSummInterest3 = \"N\/A\",\n         sSummYrsReduction = \"N\/A\", sSummAvgInterest1 = \"N\/A\",\n         sSummAvgInterest2 = \"N\/A\", sSummAvgInterest3 = \"N\/A\";\n   var iReducedMonths = 0;\n\n\/\/ alert(iError);\n\n   if (!iError)\n   {\n      switch (iPrepayMethod)\n      {\n         case 0:        \/\/ None: No Prepayments \n         default:\n            break;\n\n         case 1:        \/\/ Monthly: Pre-pay a set amount each month\n         case 2:        \/\/ Biweekly: Pre-pay a set amount every two\n                                \/\/ weeks\n            bPeriodPrepay = 1;\n            break;\n\n         case 3:        \/\/ Semiannually: Prepay a set amount every 6 months\n            bSemaPrepay = 1;\n            break;\n\n         case 4:        \/\/ Annually: Pre-pay a set amount once each year\n\/\/          bSemmPrepay = 1;\n            bAnnPrepay = 1;\n            break;\n\n         case 5:        \/\/ One Time: Pre-pay one set amount\n                        \/\/ after a given # of months\n            bSinglePrepay = 1;\n            break;\n      }\n\n      var sMessage = \"\";\n      if (nPrincipal == 0)\n     sMessage = \"Please enter your principal amount\";\n      else if (nPrincipal < 0)\n     sMessage = \"Your principal amount must be positive\";\n      else if (nPercent == 0)\n     sMessage = \"Please enter an interest rate\";\n      else if (nPercent < 0)\n     sMessage = \"Your interest rate must be positive\";\n      else if (iYears == 0)\n     sMessage = \"Please enter the amortization period\";\n      else if (iYears < 0)\n     sMessage = \"The amortization period must be positive\";\n      else if (iYears > 30)\n     sMessage = \"The amortization period must be = or less than 30 years\";\n      else if (iStartYear == 0)\n     sMessage = \"Please enter the month\";\n      else if (iPrepayMethod && !nPrepay)\n     sMessage = \"Please enter the amount prepaid\";\n      else if (nPrepay && iPrepayMethod == 0)\n     sMessage = \"Please select the payment method paid in advance\";\n      else if (nPrepay < 0)\n     sMessage = \"Prepaid amount must be positive\";\n      else if (bSinglePrepay &&\n        (iPrepayPeriod <= 0 || iPrepayPeriod > iPeriods))\n     sMessage = \"Please enter the appropriate month # for \"\n            + \"one-time pre-payment\";\n      else if (!bSinglePrepay && iPrepayPeriod)\n     sMessage = \"The one-time pre-payment field should \"\n             + \"be left blank unless you have selected the \"\n             + \"one-time pre-payment method above\";\n      if (sMessage != \"\")\n      {\n     iError = 170;\n     alert(sMessage);\n      }\n   }\n\n   if (!iError)\n   {\n      if (bPeriodPrepay)\n         nPrepayPv += PresentValue(nPrepay, nPercent, iPeriods);\n\n\/\/    if (bSemmPrepay)\n\/\/       nPrepayPv += PresentValue(nHalfPrepay, nPercent\/2,\n\/\/                          iPeriods*2);\n      if (bSemaPrepay)\n         nPrepayPv += SparsePresentValue(nPrepay, nPercent,\n                        iPpy\/2, iPeriods);\n\n      if (bAnnPrepay)\n         nPrepayPv += SparsePresentValue(nPrepay, nPercent,\n                        iPpy, iPeriods);\n\n      if (bSinglePrepay)\n         nPrepayPv += SparsePresentValue(nPrepay, nPercent,\n                        iPrepayPeriod, iPrepayPeriod);\n\n      nPayment = (iPrepayUse ? nPrincipal : (nPrincipal - nPrepayPv))\n                        \/ PresentValue(1, nPercent, iPeriods);\n      nPayment = Round(nPayment + .005, 2);\n\n      sSummPayment = nPayment;\n\n      if (nPrepayPv > 0)\n      {\n     var nFraction = 0;\n     var nBalance = nPrincipal;\n     var nInterest, nReduction;\n\n     sSummInterest1 = 0;\n     for (var iK = 1; iK <= iMonths; ++iK)\n     {\n        nInterest = nBalance * nPercent + nFraction;\n        nFraction = nInterest - Round(nInterest,2);\n        nInterest = Round(nInterest,2);\n        if (nPayment > nBalance + nInterest)\n           nPayment = nBalance + nInterest;\n        nReduction = nPayment - nInterest;\n        nBalance -= nReduction;\n            sSummInterest1 += nInterest;\n     }\n     nPayment = sSummPayment;\n     sSummAvgInterest1 = sSummInterest1 \/ iMonths;\n\n         iReducedMonths = Math.round(Math.log(\n                                1-nPercent*nPrincipal \/ nPayment)\n                        \/ Math.log(1 - nPercent));\n         sSummYrsReduction = (iMonths - iReducedMonths) \/ 12;\n         sSummInterest2 = iReducedMonths * nPayment - nPrincipal\n                                       + nPrepayPv;\n         sSummInterest3 = sSummInterest1 - sSummInterest2;\n         \/\/ sSummAvgInterest2 = sSummInterest3 \/ iReducedMonths;\n         sSummAvgInterest2 = sSummInterest2 \/ iMonths;\n         sSummAvgInterest3 = sSummAvgInterest1 - sSummAvgInterest2;\n         sSummYrsReduction = Format(sSummYrsReduction, 0, 1);\n\n         sSummInterest2 = DollarFormat(sSummInterest2, 0, 2);\n         sSummInterest3 = DollarFormat(sSummInterest3, 0, 2);\n         sSummAvgInterest2 = DollarFormat(sSummAvgInterest2, 0, 2);\n         sSummAvgInterest3 = DollarFormat(sSummAvgInterest3, 0, 2);\n      }\n\n   }\n\n   if (!iError)\n   {\n      Emit1(shStart, \"Amortization table result\");\n\n      Emit1(\"<h3>Depreciation result by periods<\/h3>\");\n      Emit1(shHeading2, \"AMORTIZATION\");\n\n      Emit(shBeginTable2);\n      EmitRow1(\"Principal\", DollarFormat(nPrincipal, 0, 2));\n      EmitRow1(\"Interest rate\", nInputInterest + \" %\");\n      EmitRow1(\"Amortization periods\", iYears + \" Years\");\n      EmitRow1(\"Start month\", Mmm(iStartMonth));\n      EmitRow1(\"Departure year\", iStartYear);\n      EmitRow1(\"Monthly payment\", DollarFormat(nPayment, 0, 2));\n      if (nPrepayPv)\n         EmitRow1(\n            bPeriodPrepay ? \"Monthly installment paid in advance\"\n               : bSemaPrepay ? \"Semi-annual installment paid in advance\"\n               : bAnnPrepay ? \"Annual installment paid in advance\"\n               : \"Your installment paid in advance\",\n            DollarFormat(nPrepay, 0, 2)\n                  + (bSinglePrepay ? (\" Paid after month # \"\n                                + iPrepayPeriod) : \"\"));\n\n\n\n\/\/    if (bDebug)\n\/\/       EmitRow1(\"nPrepayPv*\", DollarFormat(nPrepayPv, 0, 2));\n\n      Emit(shEndTable);\n   }\n\n   if (!iError && bDebug)\n   {\n      Emit1(shHeading2, \"ESTIMATED SUMMARY\");\n\n      Emit(shBeginTable2);\n      EmitRow1(\"Monthly discount\", iReducedMonths);\n      EmitRow1(\"Present value of prepaid amount\",\n                                DollarFormat(nPrepayPv, 0, 2));\n      EmitRow1(\"Monthly payment\", DollarFormat(sSummPayment, 0, 2));\n      EmitRow1(\"Total Interest without prepaid amount\",\n                                DollarFormat(sSummInterest1, 0, 2));\n      EmitRow1(\"Total Interest with amount prepaid (if applicable)\",\n                                sSummInterest2);\n      EmitRow1(\"Total interest saved\", sSummInterest3);\n      EmitRow1(\"Total annual reduction for the period \"\n                        + \"(si applicable)\", sSummYrsReduction);\n      if (bDisplayAverageInterest)\n      {\n     EmitRow1(\"Average interest per month without amount paid in advance\",\n                                DollarFormat(sSummAvgInterest1, 0, 2));\n     EmitRow1(\"Average interest per month with amount prepaid (if applicable)\",\n                                sSummAvgInterest2);\n     EmitRow1(\"Average interest saved monthly (if applicable)\",\n                                sSummAvgInterest3);\n      }\n      Emit(shEndTable);\n   }\n\n   if (!iError)\n   {\n      if (nPrepayPv == 0)\n      {\n         sSummInterest1 = 0;\n         sSummAvgInterest1 = 0;\n      }\n      else\n      {\n         sSummInterest2 = sSummInterest3 = 0;\n         sSummAvgInterest2 = sSummAvgInterest3 = 0;\n      }\n\n\n\n      Emit1(shHeading2, \"AMORTIZATION TABLE\");\n      Emit(sNl + sNl + sNl);\n      Emit(shBeginTable2);\n\n      EmitRow2(\"Year\", \"Month\", \"Payment\", \"Principal\", \"Interest\", \"Balance\");\n\n      var iK, iN;\n      var nBalance = nPrincipal;\n      var iMonth = iStartMonth, iYear = iStartYear;\n\n      var nInterest, nReduction;\n      var nPrepayment;\n      var nSavedInterest = 0;\n\n\/\/    if (bSemmPrepay)\n\/\/       nSavedInterest = PresentValue(nHalfPrepay, -nPercent\/2, 1);\n\n      var bDetail = true, bEoy = 0, iStopK = 0;\n      var sCol1, sCol2;\n      var nYrPayment = 0, nYrPrincipal = 0, nYrInterest = 0;\n      var nFraction = 0;\n\n      for (var iK = 1; !iError && !iStopK && iK <= iPeriods; ++iK)\n      {\n         if (iPpy != 26)\n         {\n            sCol1 = iYear;\n            sCol2 = Mmm(iMonth);\n         }\n         else\n         {\n            sCol1 = \"Year # \" + Math.floor((iK + iPpy - 1)\/iPpy);\n            sCol2 = \"Pmt # \" + ((iK-1) % iPpy + 1);\n         }\n\n         nInterest = nBalance * nPercent - nSavedInterest + nFraction;\n     nFraction = nInterest - Round(nInterest,2);\n     nInterest = Round(nInterest,2);\n         nYrInterest += nInterest;\n\n         nPrepayment = 0;\n         if (bPeriodPrepay || (bAnnPrepay && iK % iPpy == 0)\n                        || (bSinglePrepay && iK == iPrepayPeriod))\n            nPrepayment += nPrepay;\n\n\/\/       if (bSemmPrepay)\n\/\/          nPrepayment += nHalfPrepay;\n\n         if (bSemaPrepay && (iK % (iPpy\/2) == 0))\n            nPrepayment += nPrepay;\n\n         if (nPayment > nBalance + nInterest - nPrepayment)\n         {\n            nPrepayment = nBalance + nInterest - nPayment;\n            if (nPrepayment < 0)\n            {\n               nPayment += nPrepayment;\n               nPrepayment = 0;\n            }\n         }\n\n         nYrPayment += nPayment + nPrepayment;\n\n         nReduction = nPayment - nInterest;\n         nBalance -= nReduction;\n         if (bDetail)\n            EmitRow3(sCol1, sCol2,\n                     nPayment, nReduction, nInterest, nBalance);\n\n         if (nPrepayPv == 0)\n            sSummInterest1 += nInterest;\n         else\n            sSummInterest2 += nInterest;\n\n         nBalance -= nPrepayment;\n\n         if (bDetail && nPrepayment != 0)\n               EmitRow3(sCol1, sCol2 + \" Prepay\",\n                        nPrepayment, nPrepayment, 0, nBalance);\n         if (Round(nBalance,2) == 0)\n         {\n            nBalance = 0;\n            iStopK = iK;\n         }\n\n         if (bEoy || iK == iPeriods || iStopK)\n         {\n            nYrPrincipal = nYrPayment - nYrInterest;\n            EmitRow4(sCol1, \"TOTAL\",\n                     nYrPayment, nYrPrincipal, nYrInterest, nBalance);\n            nYrPrincipal = nYrPayment = nYrInterest = 0;\n         }\n\n         if (iPpy == 26)\n         {\n            bEoy = (iK % 26 == 25);\n            bDetail = (iK > 26);\n         }\n         else\n         {\n            bEoy = 0;\n            if (iPpy == 12 || iK % 2 == 0)\n               if (++iMonth > 12)\n               {\n                  iMonth = 1;\n                  ++iYear;\n                  bDetail = (iK < 3 * iPpy \/ 4);\n                  \/\/ alert(iK + \"\/\" + (3 * iPpy \/ 4) + \"\/\" + bDetail);\n               }\n            if (iMonth == 12 && (iPpy == 12 || iK % 2 == 1))\n               bEoy = 1;\n         }\n         if (bShowFull || bDebug)\n            bDetail = true;\n      }\n      Emit(shEndTable);\n   }\n\n\/\/ alert(sOut);\n\n   if (!iError)\n   {\n      if (nPrepayPv == 0)\n      {\n         sSummAvgInterest1 = sSummInterest1 \/ iMonths;\n\/\/       sSummAvgInterest1 = DollarFormat(sSummInterest1 \/ iMonths,\n\/\/                               0, 2);\n\/\/       sSummInterest1 = DollarFormat(sSummInterest1, 0, 2);\n      }\n      else\n      {\n         sSummYrsReduction = Format((iMonths - iStopK)\/12, 0, 1);\n         sSummAvgInterest2 = sSummInterest2 \/ iMonths;\n         sSummInterest3 = sSummInterest1 - sSummInterest2;\n         sSummAvgInterest3 = sSummAvgInterest1 - sSummAvgInterest2;\n         sSummInterest2  = DollarFormat(sSummInterest2  , 0, 2);\n         sSummAvgInterest2 = DollarFormat(sSummAvgInterest2, 0, 2);\n         sSummInterest3  = DollarFormat(sSummInterest3  , 0, 2);\n         sSummAvgInterest3 = DollarFormat(sSummAvgInterest3, 0, 2);\n      }\n\n      sSummPayment = DollarFormat(sSummPayment, 0, 2);\n      sSummInterest1 = DollarFormat(sSummInterest1, 0, 2);\n      sSummAvgInterest1 = DollarFormat(sSummAvgInterest1, 0, 2);\n\n\n      Emit1(shHeading2, \"SUMMARY\");\n\n      Emit(shBeginTable2);\n      EmitRow5(\"Monthly payment\", sSummPayment);\n      EmitRow5(\"Total interest without prepaid amount\",\n                                sSummInterest1);\n      EmitRow5(\"Total Interest with amount prepaid (if applicable)\",\n                                sSummInterest2);\n      EmitRow5(\"Total interest saved (if applicable)\", sSummInterest3);\n      EmitRow5(\"Total annual reduction for the period \"\n                        + \"(If applicable)\", sSummYrsReduction);\n      if (bDisplayAverageInterest)\n      {\n     EmitRow5(\"Average monthly interest without prepaid amount\",\n                                sSummAvgInterest1);\n     EmitRow5(\"Average monthly interest with prepaid amount \"\n                    + \"Payment paid in advance (if applicable)\",\n                                sSummAvgInterest2);\n     EmitRow5(\"Average monthly interest saved (if applicable)\",\n                                sSummAvgInterest3);\n      }\n      Emit(shEndTable);\n   }\n\n   if (!iError)\n   {\n\/\/    document.open();\n\/\/      document.write(sOut);\n\/\/     document.close();\n    var element = document.getElementById('tableau_amortissement');\n    if (element) {\n        element.innerHTML = sOut+'<br \/><p style=\"text-align:right;\"><a href=\"javascript:window.location.reload();\" class=\"bt-savoir-plus dist-btn\">Return<\/a><\/p>';\n    }\n\n   }\n\n}\n\nfunction Emit(sStr) { sOut += sStr + sNl ; }\n\nfunction Emit1(sStr, s1)\n{\n   var iK;\n   if ( (iK = sStr.indexOf(sSub)) >= 0)\n      sStr = sStr.substring(0, iK) + s1\n                + sStr.substring(iK + sSub.length);\n   Emit(sStr);\n}\n\nfunction Emitx(sStr, sSubs)\n{\n   var iK, iL, iPos1 = 0, iPos2 = 0;\n   while ( (iK = sStr.indexOf(iPos1, sSub)) >= 0)\n   {\n      if ( (iL = eSubs.indexOf(iPos2, sSep)) < 0)\n         iL = eSubs.length();\n      sStr = sStr.substring(0, iK)\n                        + sSubs.substring(iPos1, iL)\n                        + sStr.substring(iK + sSub.length());\n      iPos1 = iK + sSub.length();\n      if ( (iPos2 = iL + eSep.length()) > sSubs.length())\n         iPos2 = sSubs.length();\n   }\n   Emit(sStr);\n}\n\n\nvar sBlanks = \"                                             \"\n                + \"                                          \";\nvar sDashes = \"---------------------------------------------\"\n                + \"-----------------------------------------\";\n\nvar nPowers = [\n        0.0000000000000001,\n        0.000000000000001,\n        0.00000000000001,\n        0.0000000000001,\n        0.000000000001,\n        0.00000000001,\n        0.0000000001,\n        0.000000001,\n        0.00000001,\n        0.0000001,\n        0.000001,\n        0.00001,\n        0.0001,\n        0.001,\n        0.01,\n        0.1,\n        1.,\n        10.,\n        100.,\n        1000.,\n        10000.,\n        100000.,\n        1000000.,\n        10000000.,\n        100000000.,\n        1000000000.,\n        10000000000.];\n\nfunction Power(n)\n{\n    return nPowers[n+16];\n}\n\nvar sMonths = [\"Janvier\", \"F\\351vrier\", \"Mars\", \"Avril\", \"Mai\",\n        \"Juin\", \"Juillet\", \"Ao\\373t\", \"Septembre\", \"Octobre\",\n        \"Novembre\", \"D\\351cembre\"];\n\nfunction Mmm(iK) { if (!(iK >= 1 && iK <= 12)) return \"MMM\" + iK;\n            return sMonths[iK-1].substring(0, 3); }\n\nfunction ExpN(nX, iN)   \/\/ compute x ** n, where n is integral\n{\n   var nResult = 1;\n   var bSign = 0;\n   if (iN < 0)\n   {\n      bSign = 1;\n      iN = -iN;\n   }\n   while (iN > 0)\n   {\n      if (iN & 1)\n         nResult *= nX;\n      nX *= nX;\n      iN >>= 1;\n   }\n   if (bSign)\n      nResult = 1 \/ nResult;\n   return nResult;\n}\n\nfunction PresentValue(nPayment, nPercent, iNumPeriods)\n{\n   var nAmount = (Math.abs(nPercent) > 1e-20)\n         ? nPayment * (1 - ExpN(1 + nPercent, -iNumPeriods))\n                                        \/ nPercent \n         : nPayment * iNumPeriods;\n   return nAmount;\n}\n\nfunction SparsePresentValue(nPayment, nPercent, iInterval, iNumPeriods)\n{\n   var nAmount = (Math.abs(nPercent) > 1e-20)\n         ? nPayment * (1 - ExpN(1 + nPercent, -iNumPeriods))\n                        \/ (ExpN(1 + nPercent, iInterval) - 1)\n         : nPayment * iNumPeriods;\n   return nAmount;\n}\n\nfunction Round(nVal, iD)\n{\n   var iSign = 1;\n   if (nVal < 0)\n   {\n      nVal = - nVal;\n      iSign = -1;\n   }\n   var iInt = Math.round(nVal);\n   if (iD > 0)\n      iInt = Math.floor(nVal);\n   var nFp = nVal - iInt;\n\/\/ alert ('iInt, nFp = ' + iInt + \", \" + nFp);\n   if (iD > 0)\n      nFp = Math.round(nFp * Power(iD)) \/ Power(iD);\n   nVal = iSign * (iInt + nFp);\n   return nVal;\n}\n\nfunction Validate(sVal, bInt)\n{\n   var sMessage = \"\";\n   var bDot = 0, bE = 0, iState = 0;\n   var sCh, iK;\n   var bInvalid = 0;\n   var nValue = bInt ? parseInt(sVal) : parseFloat(sVal);\n\n   for (iK = 0; sMessage == \"\" && iK < sVal.length; ++iK)\n   {\n      sCh = sVal.charAt(iK);\n      if (sCh == \" \")\n      {\n         if (iState > 0)\n            iState = 9;\n      }\n      else\n      {\n         if (iState == 9)\n            sMessage = \"Number '\" + sVal + \"' has an embedded blank\";\n         else if (sCh == '.' && !bInt)\n         {\n            if (bDot || bE)\n           bInvalid = 1;\n            else\n               bDot = 1;\n         }\n         else if ((sCh == 'e' || sCh == 'E') && !bInt)\n         {\n            if (bE)\n           bInvalid = 1;\n            else\n            {\n               bE = 1;\n               iState = 6;\n            }\n         }\n         else if (sCh == '+' || sCh == '-')\n         {\n            if (iState == 0 || iState == 6)\n               ++iState;\n            else\n               sMessage = \"Number '\" + sVal + \"' contains a sign \"\n                                + \"in an illegal position\"\n         }\n         else if (sCh >= '0' && sCh <= '9')\n         {\n            if (iState == 1 || iState == 7)\n               ++iState;\n            else if (iState == 0 || iState == 6)\n               iState += 2;\n         }\n         else\n        bInvalid = 1;\n      }\n      if (bInvalid)\n     sMessage = \"Number '\" + sVal + \"' contains\"\n                        + \" invalid non-numeric character(s)\";\n   }\n\n   if (sMessage == \"\")\n      if (iState == 1 || iState == 6 || iState == 7)\n         sMessage = \"Illegal number: \" + sVal;\n      else if (iState == 0)\n     nValue = 0;\n   if (sMessage != \"\")\n   {\n      alert(sMessage);\n      nValue = nErrorNumber;\n   }\n   return nValue\n}\n\n\n\/\/ DollarFormat -- could be jazzed up to produce \"CR\" or \"DB\"\nfunction DollarFormat(nVal, iW, iD)\n{\n   return GenFmt(nVal, iW, iD, 1);\n}\n\nfunction Format(nVal, iW, iD)\n{\n   return GenFmt(nVal, iW, iD, 0);\n}\n\nfunction GenFmt(nVal, iW, iD, bDollar) \/\/ format val into w chars,\n                        \/\/ d digs after decimal point\n{\n   var sOut = \"\";\n   var iSign = 0;\n   nVal = Round(nVal, iD);\n   if (nVal < 0)\n   {\n      nVal = - nVal;\n      iSign = 1;\n   }\n   var iInt = Math.round(nVal);\n   if (iD > 0)\n      iInt = Math.floor(nVal);\n   var nFp = nVal - iInt;\n   var iDigs = 1;\n   if (iInt > 9)\n      iDigs = Math.floor(Math.log(iInt+.1)\/Math.log(10)) + 1;\n   var iLeft = iW - iSign - (bDollar ? 1 : 0);\n   if (iD > 0)\n      iLeft -= iD + 1;\n   if (iLeft > iDigs)\n      sOut += sBlanks.substring(0, iLeft - iDigs);\n   if (iSign)\n      sOut += '-';\n   if (bDollar)\n      sOut += '$';\n   sOut += iInt;\n   if (iD > 0)\n   {\n      nFp = Math.round((1 + nFp) * Power(iD));\n      sOut += '.' + String(nFp).substring(1);\n   }\n   return sOut;\n}\n\nfunction PrepadString(sStr, iW)\n{\n   if (sStr.length < iW)\n      sStr = sBlanks.substring(0, iW - sStr.length) + sStr;\n   return sStr;\n}\n\nfunction CenterString(sStr, iW)\n{\n   var iBlanks = iW - sStr.length;\n   if (iBlanks > 0)\n      sStr = sBlanks.substring(0, Math.floor(iBlanks\/2)) + sStr\n                + sBlanks.substring(0, iBlanks - Math.floor(iBlanks\/2));\nreturn sStr;\n}\n\n<\/script>\n<div id=\"tableau_amortissement\">\n    <form name=\"apphform\" id=\"apphform\" action=\"javascript:void(null);\" class=\"regform\">\n        <table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n            <tbody>\n                <tr>\n                    <td colspan=\"2\" class=\"table-header\">Amortization table<\/td>\n                <\/tr>\n                <tr class=\"tr-gris\">\n                    <td valign=\"top\">Capital Amount<\/td>\n                    <td>\n                        <input maxlength=\"10\" name=\"apph0001\" size=\"10\" value=\"200000\" class=\"input_dollar\">\n                    <\/td>\n                <\/tr>\n                <tr>\n                    <td valign=\"top\">Interest Rate<\/td>\n                    <td>\n                        <input maxlength=\"6\" name=\"apph0002\" size=\"7\" value=\"7.25\" class=\"input_pourcentage\">\n                    <\/td>\n                <\/tr>\n                <tr class=\"tr-gris\">\n                    <td valign=\"top\">Amortization Period                        <br>(Must be less than 30 years)<\/td>\n                    <td>\n                        <input maxlength=\"4\" name=\"apph0003\" size=\"4\" value=\"25\" class=\"input_ans\">\n                    <\/td>\n                <\/tr>\n                <tr class=\"tr-gold\">\n                    <td colspan=\"2\">Start of payments<\/td>\n                <\/tr>\n                <tr>\n                    <td valign=\"top\">Month<\/td>\n                    <td>\n                        <select name=\"apph0004\" size=\"1\">\n                            <option selected=\"selected\" value=\"1\">January<\/option>\n                            <option value=\"2\">February<\/option>\n                            <option value=\"3\">March<\/option>\n                            <option value=\"4\">April<\/option>\n                            <option value=\"5\">May<\/option>\n                            <option value=\"6\">June<\/option>\n                            <option value=\"7\">July<\/option>\n                            <option value=\"8\">August<\/option>\n                            <option value=\"9\">September<\/option>\n                            <option value=\"10\">October<\/option>\n                            <option value=\"11\">November<\/option>\n                            <option value=\"12\">December<\/option>\n                        <\/select>\n                    <\/td>\n                <\/tr>\n                <tr class=\"tr-gris\">\n                    <td>Year<\/td>\n                    <td>\n                        <input maxlength=\"5\" name=\"apph0005\" size=\"5\" value=\"2013\"> <\/td>\n                <\/tr>\n                <tr>\n                    <td valign=\"top\">Display detailed table?<\/td>\n                    <td class=\"actualite\">\n                        <select name=\"apph0006\" size=\"1\">\n                            <option value=\"0\" selected=\"selected\">No<\/option>\n                            <option value=\"1\">Yes<\/option>\n                        <\/select>\n                    <\/td>\n                <\/tr>\n                <tr>\n                    <td valign=\"top\">Capital Prepayment Method<\/td>\n                    <td>\n                        <select name=\"apph0008\" size=\"1\">\n                            <option value=\"0\" selected=\"selected\">Without payment in advance<\/option>\n                            <option value=\"1\">Prepaid monthly<\/option>\n                            <option value=\"3\">Semi-annually prepaid<\/option>\n                            <option value=\"4\">Paid in advance annually<\/option>\n                            <option value=\"5\">1 single installment paid in advance after # months<\/option>\n                        <\/select>\n                    <\/td>\n                <\/tr>\n                <tr class=\"tr-gold\">\n                    <td colspan=\"2\">Amount paid in advance on your capital<\/td>\n                <\/tr>\n                <tr class=\"tr-gris\">\n                    <td valign=\"top\">Monthly\/Semi-annually\/Annually\/One time<\/td>\n                    <td valign=\"top\" class=\"actualite\">\n                        <input maxlength=\"10\" name=\"apph0009\" size=\"10\" value=\"\" class=\"input_dollar\"> <\/td>\n                <\/tr>\n                <tr>\n                    <td>Just one payment, made after month #                        <br> (enter month number)<\/td>\n                    <td>\n                        <input maxlength=\"3\" name=\"apph0010\" size=\"10\" value=\"\"> <\/td>\n                <\/tr>\n            <\/tbody>\n        <\/table>\n        <br>\n        <p style=\"text-align: right;\"><input type=\"button\" value=\"Calculate\" class=\"bt-savoir-plus dist-btn\" onclick=\"Execute(document.apphform)\" name=\"button\"><\/p>\n    <\/form>\n<\/div>\n\n <\/div>[\/vc_column_inner][\/vc_row_inner][vc_column_text el_class=&#8221;text-center&#8221;]Note: The calculator is provided for information purposes only. PPTA is committed to keeping this tool up to date, but cannot guarantee that the information and results obtained will be accurate, reliable or complete. PPTA is not responsible for any loss or damage that may arise from the use of this calculator, we invite you to <a class=\"gold-color\" href=\"https:\/\/ppta.ca\/en\/about-us\/the-team\/\">consult your advisor<\/a> to benefit from a personalized and complete service.[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_grid&#8221; text_align=&#8221;inherit&#8221; el_class=&#8221;calculateur-row&#8221;][vc_column][vc_row_inner type=&#8221;full_width&#8221; text_align=&#8221;left&#8221; el_class=&#8221;padding-b-50&#8243;][vc_column_inner][\/vc_column_inner][\/vc_row_inner][vc_column_text el_class=&#8221;calculateur-toptitle&#8221;]Calculators \u2014 Miscellaneous[\/vc_column_text][vc_column_text el_class=&#8221;text-center&#8221;] Depreciation calculator [\/vc_column_text][vc_row_inner type=&#8221;full_width&#8221; text_align=&#8221;inherit&#8221; el_class=&#8221;calculateur-inner-row padding-b-120&#8243;][vc_column_inner][\/vc_column_inner][\/vc_row_inner][vc_column_text el_class=&#8221;text-center&#8221;]Note: The calculator is provided for information purposes only. PPTA is committed to keeping this tool up to date, but cannot guarantee that the information and results obtained will be accurate, reliable or complete. PPTA is not [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1395,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"class_list":["post-1416","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/pages\/1416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/comments?post=1416"}],"version-history":[{"count":3,"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/pages\/1416\/revisions"}],"predecessor-version":[{"id":1431,"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/pages\/1416\/revisions\/1431"}],"up":[{"embeddable":true,"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/pages\/1395"}],"wp:attachment":[{"href":"https:\/\/ppta.ca\/en\/wp-json\/wp\/v2\/media?parent=1416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}