lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master c4f84b4 10/10: Never read specamt directly fr


From: Greg Chicares
Subject: [lmi-commits] [lmi] master c4f84b4 10/10: Never read specamt directly from LedgerInvariant
Date: Fri, 4 Sep 2020 21:16:10 -0400 (EDT)

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

    Never read specamt directly from LedgerInvariant
    
    (Except, for now at least, in the implementation of the accessors
    recently added.)
---
 accountvalue.cpp |  8 ++++----
 ihs_acctval.cpp  | 34 +++++++++++++++++-----------------
 ihs_avmly.cpp    |  4 ++--
 ihs_avsolve.cpp  |  2 +-
 ihs_avstrtgy.cpp |  2 +-
 solve.cpp        |  4 ++--
 6 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/accountvalue.cpp b/accountvalue.cpp
index ac64f53..eaf2dde 100644
--- a/accountvalue.cpp
+++ b/accountvalue.cpp
@@ -291,7 +291,7 @@ void AccountValue::DoYear
     pmt                   = stored_pmts[Year];
     YearsPremLoadTgt      = Loads_->target_premium_load(GenBasis_)[Year];
     YearsMonthlyPolicyFee = Loads_->monthly_policy_fee(GenBasis_)[Year];
-    ActualSpecAmt         = InvariantValues().SpecAmt[Year];
+    ActualSpecAmt         = base_specamt(Year);
 
     // These variables are set for each pass independently.
     pmt_mode        = Outlay_->ee_premium_modes()[Year];
@@ -446,7 +446,7 @@ void AccountValue::PerformSpecAmtStrategy()
         {
         case mce_sa_input_scalar:
             {
-            SA = InvariantValues().SpecAmt[0];
+            SA = base_specamt(0);
             }
             break;
         case mce_sa_maximum:
@@ -466,7 +466,7 @@ void AccountValue::PerformSpecAmtStrategy()
                 << " Payment set to scalar input value."
                 << LMI_FLUSH
                 ;
-            SA = InvariantValues().SpecAmt[0];
+            SA = base_specamt(0);
             }
             break;
         case mce_sa_glp:
@@ -476,7 +476,7 @@ void AccountValue::PerformSpecAmtStrategy()
                 << " Payment set to scalar input value."
                 << LMI_FLUSH
                 ;
-            SA = InvariantValues().SpecAmt[0];
+            SA = base_specamt(0);
             }
             break;
         case mce_sa_gsp:      // fall through
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index 93f3f7a..29b6ff4 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -157,8 +157,8 @@ double AccountValue::term_specamt(int year) const
 double AccountValue::specamt_for_7702(int year) const
 {
     return
-                              InvariantValues().SpecAmt    [year]
-        + (TermIsDbFor7702  ? InvariantValues().TermSpecAmt[year] : 0.0)
+                              base_specamt(year)
+        + (TermIsDbFor7702  ? term_specamt(year) : 0.0)
         ;
 }
 
@@ -167,8 +167,8 @@ double AccountValue::specamt_for_7702(int year) const
 double AccountValue::specamt_for_7702A(int year) const
 {
     return
-                              InvariantValues().SpecAmt    [year]
-        + (TermIsDbFor7702A ? InvariantValues().TermSpecAmt[year] : 0.0)
+                              base_specamt(year)
+        + (TermIsDbFor7702A ? term_specamt(year) : 0.0)
         ;
 }
 
@@ -397,7 +397,7 @@ void AccountValue::InitializeLife(mcenum_run_basis a_Basis)
     OldDBOpt = DeathBfts_->dbopt()[0];
     // TAXATION !! 'OldSA' and 'OldDB' need to be distinguished for 7702 and 
7702A,
     // with inclusion of term dependent on 'TermIsDbFor7702' and 
'TermIsDbFor7702A'.
-    OldSA = InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0];
+    OldSA = base_specamt(0) + term_specamt(0);
     // TODO ?? TAXATION !! Shouldn't we increase initial SA if contract in 
corridor at issue?
     OldDB = OldSA;
 
@@ -407,7 +407,7 @@ void AccountValue::InitializeLife(mcenum_run_basis a_Basis)
     double annual_target_premium = GetModalTgtPrem
         (0
         ,mce_annual
-        ,InvariantValues().SpecAmt[0]
+        ,base_specamt(0)
         );
     double sa = specamt_for_7702(0);
 
@@ -895,8 +895,8 @@ void AccountValue::InitializeYear()
 void AccountValue::InitializeSpecAmt()
 {
     // TODO ?? These variables are set in current run and used in guar and 
midpt.
-    ActualSpecAmt       = InvariantValues().SpecAmt[Year];
-    TermSpecAmt         = InvariantValues().TermSpecAmt[Year];
+    ActualSpecAmt = base_specamt(Year);
+    TermSpecAmt   = term_specamt(Year);
 
     set_modal_min_premium();
 
@@ -913,7 +913,7 @@ void AccountValue::InitializeSpecAmt()
     // frequent mode (monthly for lmi), because no-lapse guarantees
     // are offered for all modes.
     //
-    // Arguably InvariantValues().TermSpecAmt should be used in the
+    // Arguably the "supplemental" specamt should be included in the
     // target or even the minimum calculation in the TermIsNotRider
     // case; but that's used only with one family of exotic products
     // for which these quantities don't matter anyway.
@@ -922,12 +922,12 @@ void AccountValue::InitializeSpecAmt()
     MlyNoLapsePrem = GetModalMinPrem
         (target_year
         ,mce_monthly
-        ,InvariantValues().SpecAmt[target_year]
+        ,base_specamt(target_year)
         );
     UnusedTargetPrem = GetModalTgtPrem
         (target_year
         ,mce_annual
-        ,InvariantValues().SpecAmt[target_year]
+        ,base_specamt(target_year)
         );
     AnnualTargetPrem = UnusedTargetPrem;
 
@@ -970,7 +970,7 @@ void AccountValue::set_list_bill_premium()
         auto const z = GetListBillPremMlyDed
             (Year
             ,Outlay_->er_premium_modes()[Year]
-            ,InvariantValues().SpecAmt[Year]
+            ,base_specamt(Year)
             );
         InvariantValues().ListBillPremium   = z;
         InvariantValues().ErListBillPremium = z;
@@ -980,8 +980,8 @@ void AccountValue::set_list_bill_premium()
         auto const z = GetListBillPremMlyDedEx
             (Year
             ,Outlay_->er_premium_modes()[Year]
-            ,InvariantValues().SpecAmt[Year]
-            ,InvariantValues().TermSpecAmt[Year]
+            ,base_specamt(Year)
+            ,term_specamt(Year)
             );
         InvariantValues().EeListBillPremium = z.first;
         InvariantValues().ErListBillPremium = z.second;
@@ -1008,7 +1008,7 @@ void AccountValue::set_modal_min_premium()
         auto const z = GetModalMinPrem
             (Year
             ,Outlay_->er_premium_modes()[Year]
-            ,InvariantValues().SpecAmt[Year]
+            ,base_specamt(Year)
             );
         InvariantValues().ModalMinimumPremium[Year]   = z;
         InvariantValues().ErModalMinimumPremium[Year] = z;
@@ -1018,8 +1018,8 @@ void AccountValue::set_modal_min_premium()
         auto const z = GetModalPremMlyDedEx
             (Year
             ,Outlay_->er_premium_modes()[Year]
-            ,InvariantValues().SpecAmt[Year]
-            ,InvariantValues().TermSpecAmt[Year]
+            ,base_specamt(Year)
+            ,term_specamt(Year)
             );
         InvariantValues().EeModalMinimumPremium[Year] = z.first;
         InvariantValues().ErModalMinimumPremium[Year] = z.second;
diff --git a/ihs_avmly.cpp b/ihs_avmly.cpp
index fa959ae..22b1cc5 100644
--- a/ihs_avmly.cpp
+++ b/ihs_avmly.cpp
@@ -1528,13 +1528,13 @@ void AccountValue::TxSetBOMAV()
         {
         if(!yare_input_.TermRider && !TermIsNotRider)
             {
-            LMI_ASSERT(0.0 == InvariantValues().TermSpecAmt[0]);
+            LMI_ASSERT(0.0 == term_specamt(0));
             }
         LMI_ASSERT(yare_input_.InforceSpecAmtLoadBase <= SpecAmtLoadLimit);
         SpecAmtLoadBase =
             (0 == Year && 0 == Month)
             ? std::max
-                (InvariantValues().TermSpecAmt[0] + 
InvariantValues().SpecAmt[0]
+                (term_specamt(0) + base_specamt(0)
                 ,NetPmts[0] * YearsCorridorFactor
                 )
             : yare_input_.InforceSpecAmtLoadBase
diff --git a/ihs_avsolve.cpp b/ihs_avsolve.cpp
index 15411f4..d291757 100644
--- a/ihs_avsolve.cpp
+++ b/ihs_avsolve.cpp
@@ -221,7 +221,7 @@ double AccountValue::SolveTest(double a_CandidateValue)
         {
         // The input specified amount mustn't be used here because
         // it wouldn't reflect dynamic adjustments.
-        SolveTargetCsv_ = InvariantValues().SpecAmt[SolveTargetDuration_ - 1];
+        SolveTargetCsv_ = base_specamt(SolveTargetDuration_ - 1);
         }
 
     if(mce_solve_for_tax_basis == SolveTarget_)
diff --git a/ihs_avstrtgy.cpp b/ihs_avstrtgy.cpp
index 2196b74..44374fd 100644
--- a/ihs_avstrtgy.cpp
+++ b/ihs_avstrtgy.cpp
@@ -266,7 +266,7 @@ double AccountValue::DoPerformPmtStrategy
         case mce_pmt_target:
             {
             int const target_year = TgtPremFixedAtIssue ? 0 : Year;
-            double sa = InvariantValues().SpecAmt[target_year];
+            double sa = base_specamt(target_year);
             return GetModalTgtPrem(Year, a_CurrentMode, sa);
             }
         case mce_pmt_mep:
diff --git a/solve.cpp b/solve.cpp
index b553bf4..f56d475 100644
--- a/solve.cpp
+++ b/solve.cpp
@@ -109,12 +109,12 @@ double SolveTest()
                 {
                 case mce_option1:
                     {
-                    y = ConstThat->InvariantValues().SpecAmt[ThatSolveTgtYear 
- 1];
+                    y = ConstThat->base_specamt(ThatSolveTgtYear - 1);
                     }
                     break;
                 case mce_option2:
                     {
-                    y = ConstThat->InvariantValues().SpecAmt[ThatSolveTgtYear 
- 1];
+                    y = ConstThat->base_specamt(ThatSolveTgtYear - 1);
                     }
                     break;
                 case mce_rop: // fall through



reply via email to

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