Post Reply 
APR with fees (mortgage)
05-23-2015, 05:12 PM (This post was last modified: 05-23-2015 05:59 PM by salvomic.)
Post: #1
APR with fees (mortgage)
hi everybody,
here there is a program to calculate the fees for a mortgage (as percentile "points" %, fix amount or both).

Enjoy!

Salvo Micciché

Code:

export APR_pmt:=0;
export APR_net:=0;
export APR_apr:={0,0};

smenu();
calcPoints();
calcAmt();
pointFix();

EXPORT APR_fees()
// APR (TAEG) with fees (spese)
// Salvo Micciché 2015
BEGIN
  smenu();
END;

calcPoints()
BEGIN
  local pv, n, r, points, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {points, [0], {15,15,2}},
     {beg,0, {70,2,2}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Points%","End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Points fees (%)", 
             "Begin or End" }, 
            {0,0,0,0,0}, 
            {10000, 360, 5, 1, 1} );
  pmt:= Finance.CalcPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - (pv * points/100);
  apr:= Finance.CalcIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

calcAmt()
BEGIN
  local pv, n, r, amt, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {amt, [0], {15,15,2}},
     {beg,0, {70,2,2}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Fix amount","End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Fix amount to pay", 
             "Begin or End" }, 
            {0,0,0,0,0}, 
            {10000, 360, 5, 500, 1} );
  pmt:= Finance.CalcPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - amt;
  apr:= Finance.CalcIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

pointFix()
BEGIN
  local pv, n, r, points, amt, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {points, [0], {15,15,2}},{amt, [0], {70,15,2}},
     {beg,0, {70,2,3}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Points%", "Fix amt", "End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Points fees (%)", 
             "Fix amount to pay", "Begin or End" }, 
            {0,0,0,0,0,0}, 
            {10000, 360, 5, 1, 500, 1} );
  pmt:= Finance.CalcPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - (pv * points/100) - amt;
  apr:= Finance.CalcIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

smenu()
BEGIN
local ch;
  CHOOSE(ch, "APR (TAEG) with fees", "Fees: points %", "Fees: amount", "Fees: points + fix amount", "Quit");
  CASE
   IF ch==1 THEN calcPoints(); END;
   IF ch==2 THEN calcAmt(); END;
   IF ch==3 THEN pointFix(); END;
   IF ch==4 THEN RETURN; END;
  DEFAULT
  END; // case
END;

∫aL√0mic (IT9CLU) :: HP Prime 50g 41CX 71b 42s 39s 35s 12C 15C - DM42, DM41X - WP34s Prime Soft. Lib
Visit this user's website Find all posts by this user
Quote this message in a reply
04-23-2016, 03:19 PM
Post: #2
RE: APR with fees (mortgage)
New version after firmware 10077.
This version doesn't work with previous firmwares.

Code:

// APR fees 2.0 by Salvo Micciché
// require firmware > 10077

export APR_pmt:=0;
export APR_net:=0;
export APR_apr:={0,0};

smenu();
calcPoints();
calcAmt();
pointFix();

EXPORT APR_fees()
// APR (TAEG) with fees (spese)
// Salvo Micciché 2015
BEGIN
  smenu();
END;

calcPoints()
BEGIN
  local pv, n, r, points, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {points, [0], {15,15,2}},
   {beg,0, {70,2,2}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Points%","End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Points fees (%)", 
             "Begin or End" }, 
            {0,0,0,0,0}, 
            {10000, 360, 5, 1, 1} );
  pmt:= Finance.TvmPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - (pv * points/100);
  apr:= Finance.TvmIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

calcAmt()
BEGIN
  local pv, n, r, amt, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {amt, [0], {15,15,2}},
   {beg,0, {70,2,2}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Fix amount","End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Fix amount to pay", 
             "Begin or End" }, 
            {0,0,0,0,0}, 
            {10000, 360, 5, 500, 1} );
  pmt:= Finance.TvmPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - amt;
  apr:= Finance.TvmIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

pointFix()
BEGIN
  local pv, n, r, points, amt, beg;
  local pmt, net, apr;
  input ({ {pv, [0], {15,15,1}}, 
            {n, [0], {40,15,1}},{r,[0],{70,15,1}},
            {points, [0], {15,15,2}},{amt, [0], {70,15,2}},
   {beg,0, {70,2,3}}
             }, 
            "APR (TAEG) rate", 
            {"PV", "N","i%","Points%", "Fix amt", "End"}, 
            {"Present value (mortgage)", "Period (months)", "Interest rate%", "Points fees (%)", 
             "Fix amount to pay", "Begin or End" }, 
            {0,0,0,0,0,0}, 
            {10000, 360, 5, 1, 500, 1} );
  pmt:= Finance.TvmPMT(n,r, pv, 0, 12, 12, beg);
  net:= pv - (pv * points/100) - amt;
  apr:= Finance.TvmIPYR(n,net, pmt, 0, 12,12, beg);
  RECT_P();
   TEXTOUT_P("Monthly payment " + EVAL(pmt), 25,50);
   TEXTOUT_P("Actual amount received " + EVAL(net), 25, 70);
   TEXTOUT_P("Monthly rate " + ROUND(EVAL(apr/12),3) + "%", 25, 90);
   TEXTOUT_P("APR (TAEG) " + ROUND(EVAL(apr),3) + "%", 25, 110);
   TEXTOUT_P("Press ESC key to continue", 25, 130, 3, RGB(0,0,255));
  WAIT;
sto(pmt, APR_pmt);
sto(net, APR_net);
sto({apr/12, apr}, APR_apr);
  smenu();
END;

smenu()
BEGIN
local ch;
  CHOOSE(ch, "APR (TAEG) with fees", "Fees: points %", "Fees: amount", "Fees: points + fix amount", "Quit");
  CASE
   IF ch==1 THEN calcPoints(); END;
   IF ch==2 THEN calcAmt(); END;
   IF ch==3 THEN pointFix(); END;
   IF ch==4 THEN RETURN; END;
  DEFAULT
  END; // case
END;

∫aL√0mic (IT9CLU) :: HP Prime 50g 41CX 71b 42s 39s 35s 12C 15C - DM42, DM41X - WP34s Prime Soft. Lib
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)