[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master e9a9bbe 1/3: Almost add CurrAcctValLoad to 77
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master e9a9bbe 1/3: Almost add CurrAcctValLoad to 7702 "spread" |
Date: |
Thu, 25 Feb 2021 16:36:07 -0500 (EST) |
branch: master
commit e9a9bbec2291a53648b70c0103a32277b83d4dde
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Almost add CurrAcctValLoad to 7702 "spread"
This commit uses new code, zeroing out the effect of CurrAcctValLoad
to make acceptance testing easy. The next commit will un-zero it back
in, causing regressions that should be straightforward to test.
The new code explicitly imposes the separate-account-only condition
that is now stated in the 7702 documentation as well, which was
mentioned in a comment added in the preceding commit.
---
7702.html | 6 ++++--
i7702.cpp | 19 +++++++++++++++----
stratified_charges.cpp | 3 +--
3 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/7702.html b/7702.html
index 6581cdb..53e897c 100644
--- a/7702.html
+++ b/7702.html
@@ -1001,11 +1001,13 @@ reflect expenses.
<p>
6 Asset based charges can be deducted only if they are
-specified in the contract itself: charges imposed by
+specified in the contract itself; charges imposed by
separate accounts cannot be deducted unless they are
specified in the life insurance contract proper, since any
charge not so specified is deemed to be
-zero<a href="#fn37" name="fr37" title="">[37]</a>.
+zero<a href="#fn37" name="fr37" title="">[37]</a>,
+and naturally do not reduce the interest rate for contracts
+that offer a general-account option.
They also must not exceed the charges reasonably expected to be
actually
imposed<a href="#fn38" name="fr38" title="">[38]</a>.
diff --git a/i7702.cpp b/i7702.cpp
index 9cc305a..4826c41 100644
--- a/i7702.cpp
+++ b/i7702.cpp
@@ -36,10 +36,21 @@ i7702::i7702
:database_ {database}
,stratified_ {stratified}
{
- spread_.assign
- (database_.length()
- ,stratified_.minimum_tiered_sepacct_load_for_7702()
- );
+ database_.query_into(DB_CurrAcctValLoad, spread_);
+ // For the nonce, zero out the effect of DB_CurrAcctValLoad in
+ // order to demonstrate that this commit has no effect on
+ // regression tests using real-world products, all of which
+ // either offer no general-account option or have no
+ // tiered separate-account loads--IOW, they obey the 'if'
+ // condition that is now made explicit below.
+ spread_ *= 0.0;
+ if
+ ( database_.query<bool>(DB_AllowSepAcct)
+ && !database_.query<bool>(DB_AllowGenAcct)
+ )
+ {
+ spread_ += stratified_.minimum_tiered_sepacct_load_for_7702();
+ }
// Monthly guar net int for 7702 is
// greater of {iglp(), igsp()} and annual guar int rate
diff --git a/stratified_charges.cpp b/stratified_charges.cpp
index 87c8e30..219bbae 100644
--- a/stratified_charges.cpp
+++ b/stratified_charges.cpp
@@ -416,8 +416,7 @@ double stratified_charges::tiered_guar_sepacct_load(double
assets, double) const
///
/// TODO ?? TAXATION !! Missing "CurrSepAcctLoadBandedByAssets".
/// But "CurrSepAcctLoadBandedByPrem" is deliberately excluded,
-/// because it's not based on assets. Elsewhere, "DB_CurrAcctValLoad"
-/// should be added to the result.
+/// because it's not based on assets.
double stratified_charges::minimum_tiered_sepacct_load_for_7702() const
{