lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master 8a9085a 08/14: Reflect DB_GenAcctIntBonus in


From: Greg Chicares
Subject: [lmi-commits] [lmi] master 8a9085a 08/14: Reflect DB_GenAcctIntBonus in 7702 interest
Date: Thu, 1 Apr 2021 18:15:17 -0400 (EDT)

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

    Reflect DB_GenAcctIntBonus in 7702 interest
    
    Every side agreement is unique. This change assumes that a bonus that
    extends for several years is guaranteed not to change in the first year.
---
 i7702.cpp      |  1 +
 i7702_init.cpp | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/i7702.cpp b/i7702.cpp
index 7e19704..b3b70f7 100644
--- a/i7702.cpp
+++ b/i7702.cpp
@@ -95,6 +95,7 @@
 /// C: initial short-term guarantees--ignored for GLP only
 ///   "extending no more than one year" (DEFRA Blue Book, page 649)
 ///   a vector for convenience, uniformly zero after the issue year
+///   expressed as the total floor rate, not as an increment
 ///   usually altogether avoided by careful product design
 ///
 /// D: asset-based charges
diff --git a/i7702_init.cpp b/i7702_init.cpp
index 1d65b1a..49438d7 100644
--- a/i7702_init.cpp
+++ b/i7702_init.cpp
@@ -104,6 +104,23 @@ i7702::i7702
     database.query_into(DB_ShortTermIntGuar7702, Cgen_);
     Csep_ = Cgen_;
 
+    // 'C' is a total, not an increment. Thus, a guarantee to credit
+    // at least 5% in the first year could be represented as 0.05 in
+    // DB_ShortTermIntGuar7702. But a first-year "bonus" of 1% that is
+    // guaranteed not to change before the first anniversary is an
+    // increment that must be added to 'B'; if 'B' is 3.5%, then 'C'
+    // would be 4.5% in the issue year and zero thereafter. A longer-
+    // duration guaranteed "bonus" would affect 'B' directly. Unique
+    // varieties of interest guarantees might require special coding.
+
+    std::vector<double> general_account_interest_bonus;
+    database.query_into(DB_GenAcctIntBonus, general_account_interest_bonus);
+    if(0.0 != general_account_interest_bonus[0])
+        {
+        double initial_floor = Bgen_[0] + general_account_interest_bonus[0];
+        Cgen_[0] = std::max(Cgen_[0], initial_floor);
+        }
+
     database.query_into(DB_CurrSepAcctLoad, Dsep_);
     Dsep_ += stratified.minimum_tiered_sepacct_load_for_7702();
 



reply via email to

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