lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master d39bbb8 3/5: Use new 7702 interest rates for


From: Greg Chicares
Subject: [lmi-commits] [lmi] master d39bbb8 3/5: Use new 7702 interest rates for guideline premiums
Date: Mon, 15 Mar 2021 11:03:45 -0400 (EDT)

branch: master
commit d39bbb8bc0a6a809f78484f88b4e1b05400be541
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Use new 7702 interest rates for guideline premiums
    
    Replaced old interest rates with new. Removed old code that set 'ig'
    to 'ic' (unless uniformly zero) in class Irc7702. No regressions are
    observed, as is reasonable because the old and new rates do match.
    A regression could arise if the contractual NAAR discount rate,
    i7702::Em_, had been rounded up to a slightly higher value than 'ic',
    and the general-account guaranteed rate were the same as the 7702
    statutory rate, which probably hasn't happened since the 1990s.
---
 gpt_test.cpp     |  7 ++++---
 ihs_basicval.cpp |  7 ++++---
 ihs_irc7702.cpp  | 58 ++++++++++++++------------------------------------------
 ihs_irc7702.hpp  | 14 ++++++++------
 4 files changed, 30 insertions(+), 56 deletions(-)

diff --git a/gpt_test.cpp b/gpt_test.cpp
index 502e45b..fa40733 100644
--- a/gpt_test.cpp
+++ b/gpt_test.cpp
@@ -443,9 +443,10 @@ Irc7702& gpt_test::instantiate_old(int issue_age)
             ,issue_age                       // a_IssueAge
             ,issue_age + length              // a_EndtAge
             ,q_m                             // a_Qc
-            ,glp_ic                          // a_GLPic
-            ,gsp_ic                          // a_GSPic
-            ,glp_ic                          // a_Ig [ignored here, in effect]
+            ,glp_ic                          // ic_glp
+            ,gsp_ic                          // ic_gsp
+            ,glp_ig                          // ig_glp
+            ,gsp_ig                          // ig_gsp
             ,0.0                             // a_PresentBftAmt
             ,0.0                             // a_PresentSpecAmt
             ,0.0                             // a_LeastBftAmtEver
diff --git a/ihs_basicval.cpp b/ihs_basicval.cpp
index b55cbee..82f7453 100644
--- a/ihs_basicval.cpp
+++ b/ihs_basicval.cpp
@@ -458,9 +458,10 @@ void BasicValues::Init7702()
         ,yare_input_.IssueAge
         ,EndtAge
         ,Mly7702qc
-        ,i7702_->net_glp()
-        ,i7702_->net_gsp()
-        ,i7702_->ig()
+        ,i7702_->ic_glp()
+        ,i7702_->ic_gsp()
+        ,i7702_->ig_glp()
+        ,i7702_->ig_gsp()
         ,yare_input_.SpecifiedAmount[0] + yare_input_.TermRiderAmount
         ,yare_input_.SpecifiedAmount[0] + yare_input_.TermRiderAmount
         ,yare_input_.SpecifiedAmount[0] + yare_input_.TermRiderAmount
diff --git a/ihs_irc7702.cpp b/ihs_irc7702.cpp
index 2a9c476..30c84a8 100644
--- a/ihs_irc7702.cpp
+++ b/ihs_irc7702.cpp
@@ -74,10 +74,6 @@ namespace
         static std::vector<double> const v(d, d + n);
         return v;
         }
-
-    // Use 7702 int rate for DB discount in NAAR. TAXATION !! Does it
-    // make sense to retain this?
-    bool g_UseIcForIg = true;
 } // Unnamed namespace.
 
 // TAXATION !! General concerns
@@ -111,9 +107,10 @@ Irc7702::Irc7702
     ,int                        a_IssueAge
     ,int                        a_EndtAge
     ,std::vector<double> const& a_Qc
-    ,std::vector<double> const& a_GLPic
-    ,std::vector<double> const& a_GSPic
-    ,std::vector<double> const& a_Ig
+    ,std::vector<double> const& ic_glp
+    ,std::vector<double> const& ic_gsp
+    ,std::vector<double> const& ig_glp
+    ,std::vector<double> const& ig_gsp
     ,double                     a_PresentBftAmt
     ,double                     a_PresentSpecAmt
     ,double                     a_LeastBftAmtEver
@@ -142,9 +139,10 @@ Irc7702::Irc7702
     ,IssueAge           {a_IssueAge}
     ,EndtAge            {a_EndtAge}
     ,Qc                 {a_Qc}
-    ,GLPic              {a_GLPic}
-    ,GSPic              {a_GSPic}
-    ,Ig                 {a_Ig}
+    ,ic_glp_            {ic_glp}
+    ,ic_gsp_            {ic_gsp}
+    ,ig_glp_            {ig_glp}
+    ,ig_gsp_            {ig_gsp}
     ,PresentBftAmt      {a_PresentBftAmt}
     ,PriorBftAmt        {a_PresentBftAmt}
     ,PresentSpecAmt     {a_PresentSpecAmt}
@@ -408,40 +406,12 @@ void Irc7702::Init()
 //============================================================================
 void Irc7702::InitCommFns()
 {
-    std::vector<double> glp_naar_disc_rate;
-    std::vector<double> gsp_naar_disc_rate;
-    std::vector<double> const zero(Length, 0.0);
-
-    // g_UseIcForIg indicates whether the 7702 rates should be used for the 
NAAR
-    // discount factor. We interpret a guar rate (IG) of zero in all years as
-    // no NAAR discount factor.
-
-    if(!g_UseIcForIg)
-        {
-        // if the flag is not set, use guar rates for NAAR discount factor
-        glp_naar_disc_rate = Ig;
-        gsp_naar_disc_rate = Ig;
-        }
-    else if(zero == Ig)
-        {
-        // if guar rate is zero, we will always use it for the NAAR discount 
factor
-        glp_naar_disc_rate = Ig;
-        gsp_naar_disc_rate = Ig;
-        }
-    else
-        {
-        // if the flag is true, and the guar rate !=0, use the 7702 rates for
-        // the NAAR discount factor
-        glp_naar_disc_rate = GLPic;
-        gsp_naar_disc_rate = GSPic;
-        }
-
     // Commutation functions using min i = iglp(): both options 1 and 2
     CommFns[Opt1Int4Pct].reset
         (::new ULCommFns
             (Qc
-            ,GLPic
-            ,glp_naar_disc_rate
+            ,ic_glp_
+            ,ig_glp_
             ,mce_option1_for_7702
             ,mce_monthly
             )
@@ -451,8 +421,8 @@ void Irc7702::InitCommFns()
     CommFns[Opt2Int4Pct].reset
         (::new ULCommFns
             (Qc
-            ,GLPic
-            ,glp_naar_disc_rate
+            ,ic_glp_
+            ,ig_glp_
             ,mce_option2_for_7702
             ,mce_monthly
             )
@@ -463,8 +433,8 @@ void Irc7702::InitCommFns()
     CommFns[Opt1Int6Pct].reset
         (::new ULCommFns
             (Qc
-            ,GSPic
-            ,gsp_naar_disc_rate
+            ,ic_gsp_
+            ,ig_gsp_
             ,mce_option1_for_7702
             ,mce_monthly
             )
diff --git a/ihs_irc7702.hpp b/ihs_irc7702.hpp
index bf4ee85..ea866bf 100644
--- a/ihs_irc7702.hpp
+++ b/ihs_irc7702.hpp
@@ -60,9 +60,10 @@ class Irc7702 final
         ,int                        a_IssueAge
         ,int                        a_EndtAge
         ,std::vector<double> const& a_Qc
-        ,std::vector<double> const& a_GLPic
-        ,std::vector<double> const& a_GSPic
-        ,std::vector<double> const& a_Ig
+        ,std::vector<double> const& ic_glp
+        ,std::vector<double> const& ic_gsp
+        ,std::vector<double> const& ig_glp
+        ,std::vector<double> const& ig_gsp
         ,double                     a_PresentBftAmt
         ,double                     a_PresentSpecAmt
         ,double                     a_LeastBftAmtEver
@@ -175,9 +176,10 @@ class Irc7702 final
     int const                  EndtAge;    // Endowment age
 
     std::vector<double> const& Qc;         // 7702 mortality rate
-    std::vector<double> const& GLPic;      // 7702 GLP interest rate
-    std::vector<double> const& GSPic;      // 7702 GSP interest rate
-    std::vector<double> const& Ig;         // Death benefit discount rate
+    std::vector<double> const& ic_glp_;
+    std::vector<double> const& ic_gsp_;
+    std::vector<double> const& ig_glp_;
+    std::vector<double> const& ig_gsp_;
 
     double                     PresentBftAmt;
     double                     PriorBftAmt;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]