[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();
- [lmi-commits] [lmi] master updated (8d18fa1 -> 29b2ad4), Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 98a214c 01/14: Rule of three <<< five < zero, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master c309291 02/14: Factor out precondition assertions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 218e02a 03/14: Reflect short-term guarantees in 7702 interest rates, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 2d10858 06/14: Use DB_AnnIntRateGspDelta instead of hard-coding two percent, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 8a9085a 08/14: Reflect DB_GenAcctIntBonus in 7702 interest,
Greg Chicares <=
- [lmi-commits] [lmi] master 836c6f9 09/14: Refactor unit test, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 637f0de 12/14: Reorder unit-test functions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master c291b59 05/14: Assert more preconditions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master cb16682 10/14: Make i7702 vector assignments idempotent, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 8723736 11/14: Make bland1() truly bland, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 36266d1 13/14: Don't echo unneeded values in unit test, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 29b2ad4 14/14: Measure i7702 speed, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master ad538f7 07/14: Fix defect introduced 20210314T2207Z: wrong VLR, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 26db3ec 04/14: Move an assertion upstream, and generalize it, Greg Chicares, 2021/04/01