[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [6203] Conditionalize rider vs.
From: |
Greg Chicares |
Subject: |
[lmi-commits] [6203] Conditionalize rider vs. |
Date: |
Sun, 31 May 2015 23:23:27 +0000 |
Revision: 6203
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=6203
Author: chicares
Date: 2015-05-31 23:23:26 +0000 (Sun, 31 May 2015)
Log Message:
-----------
Conditionalize rider vs. non-rider term behaviors
Modified Paths:
--------------
lmi/trunk/ChangeLog
lmi/trunk/ihs_avmly.cpp
Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2015-05-31 20:02:41 UTC (rev 6202)
+++ lmi/trunk/ChangeLog 2015-05-31 23:23:26 UTC (rev 6203)
@@ -36288,3 +36288,41 @@
ledger_invariant.cpp
Establish storage for supplemental specified amount.
+20150531T1443Z <address@hidden> [511]
+
+ account_value.hpp
+ ihs_avmly.cpp
+Convert optionally when term rider ends.
+
+20150531T1726Z <address@hidden> [511]
+
+ basic_values.hpp
+ ihs_acctval.cpp
+ ihs_avstrtgy.cpp
+ ihs_basicval.cpp
+Calculate special minimum premiums.
+
+20150531T1803Z <address@hidden> [511]
+
+ account_value.hpp
+ ihs_avstrtgy.cpp
+Refactor.
+
+20150531T1837Z <address@hidden> [511]
+
+ account_value.hpp
+ ihs_acctval.cpp
+ ihs_avstrtgy.cpp
+Offer strategies for supplemental specified amount.
+
+20150531T2002Z <address@hidden> [511]
+
+ account_value.hpp
+ ihs_avmly.cpp
+Support yearly changes in supplemental specified amount.
+
+20150531T2323Z <address@hidden> [511]
+
+ ihs_avmly.cpp
+Conditionalize rider vs. non-rider term behaviors.
+
Modified: lmi/trunk/ihs_avmly.cpp
===================================================================
--- lmi/trunk/ihs_avmly.cpp 2015-05-31 20:02:41 UTC (rev 6202)
+++ lmi/trunk/ihs_avmly.cpp 2015-05-31 23:23:26 UTC (rev 6203)
@@ -739,7 +739,8 @@
{
double ProportionAppliedToTerm = 0.0;
double prior_specamt = ActualSpecAmt;
- if(TermRiderActive)
+ // Adjust term here only if it's formally a rider.
+ if(TermRiderActive && !TermIsNotRider)
{
switch(yare_input_.TermAdjustmentMethod)
{
@@ -830,7 +831,12 @@
// that the ledger object is used for working storage, where it should
// probably be write-only instead.
InvariantValues().SpecAmt[j] = ActualSpecAmt;
- InvariantValues().TermSpecAmt[j] = TermSpecAmt;
+ // Adjust term here only if it's formally a rider.
+ // Otherwise, its amount should not have been changed.
+ if(!TermIsNotRider)
+ {
+ InvariantValues().TermSpecAmt[j] = TermSpecAmt;
+ }
// Term specamt is a vector in class LedgerInvariant, but a scalar in
// the input classes, e.g.:
// yare_input_.TermRiderAmount
@@ -1586,7 +1592,7 @@
// and includes term rider.
if(Year == InforceYear && Month == InforceMonth)
{
- if(!yare_input_.TermRider)
+ if(!yare_input_.TermRider && !TermIsNotRider)
{
LMI_ASSERT(0.0 == InvariantValues().TermSpecAmt[0]);
}
@@ -1735,12 +1741,15 @@
{
return;
}
- if(!yare_input_.TermRider)
+ // If term is not formally a rider, then it's always active for
+ // the entire illustrated duration. Its amount may be reduced to
+ // zero, but might later be increased; at any rate, illustrations
+ // do not "remove" it.
+ if(!yare_input_.TermRider && !TermIsNotRider)
{
TermRiderActive = false;
return;
}
-
if
( (TermForcedConvDur <= Year)
&& (TermForcedConvAge <= Year + BasicValues::GetIssueAge())
@@ -1890,7 +1899,7 @@
TermCharge = 0.0;
DcvTermCharge = 0.0;
- if(TermRiderActive && yare_input_.TermRider)
+ if(TermRiderActive)
{
TermCharge = YearsTermRate * TermDB * DBDiscountRate[Year];
// TAXATION !! Integrated term: s/TermDB/TermSpecAmt/ because
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [6203] Conditionalize rider vs.,
Greg Chicares <=