lmi-commits
[Top][All Lists]
Advanced

[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
+                ;
+            }
         }
 }
 




reply via email to

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