[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [5672] Warn when increasing specified amount on an inforce
From: |
Greg Chicares |
Subject: |
[lmi-commits] [5672] Warn when increasing specified amount on an inforce case |
Date: |
Tue, 02 Apr 2013 08:43:16 +0000 |
Revision: 5672
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5672
Author: chicares
Date: 2013-04-02 08:43:16 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Warn when increasing specified amount on an inforce case
Modified Paths:
--------------
lmi/trunk/ihs_avstrtgy.cpp
Modified: lmi/trunk/ihs_avstrtgy.cpp
===================================================================
--- lmi/trunk/ihs_avstrtgy.cpp 2013-04-02 08:41:27 UTC (rev 5671)
+++ lmi/trunk/ihs_avstrtgy.cpp 2013-04-02 08:43:16 UTC (rev 5672)
@@ -136,15 +136,46 @@
/// The actual minimum, set elsewhere, is ascertainable only during
/// monthiversary processing because, e.g., it may depend on whether
/// cash value is sufficient to keep a term rider in force.
+///
+/// For inforce, warn before increasing specamt to the minimum in the
+/// first inforce year: either an underwriting exception was made, or
+/// input is erroneous; but apply the minimum silently if specamt is
+/// to be calculated from a strategy, or if a lower amount is given in
+/// any other year (which doesn't represent the present state of the
+/// contract, and presumably results from manual editing).
void AccountValue::PerformSpecAmtStrategy()
{
+ // Store original input specamt for first inforce year, for
+ // comparison below. Using DeathBfts_->specamt() here instead of
+ // yare_input_.SpecifiedAmount means that the inforce warning
+ // appears only once, because the former is overwritten but the
+ // latter is not.
+ double const inforce_specamt = DeathBfts_->specamt().at(InforceYear);
for(int j = 0; j < BasicValues::Length; ++j)
{
bool t = yare_input_.TermRider && 0.0 != yare_input_.TermRiderAmount;
double m = minimum_specified_amount(0 == j, t);
double z = CalculateSpecAmtFromStrategy(j, 0);
DeathBfts_->set_specamt(round_specamt()(std::max(m, z)), j, 1 + j);
+ if
+ ( j == InforceYear
+ && !(0 == InforceYear && 0 == InforceMonth)
+ && mce_sa_input_scalar == yare_input_.SpecifiedAmountStrategy[j]
+ && inforce_specamt < m
+ )
+ {
+ warning()
+ << "Inforce specified amount "
+ << inforce_specamt
+ << " increased to the "
+ << m
+ << " minimum for '"
+ << yare_input_.InsuredName
+ << "'."
+ << std::flush
+ ;
+ }
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [5672] Warn when increasing specified amount on an inforce case,
Greg Chicares <=