lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [5274] Constrain salary-based specamt as newly documented


From: Greg Chicares
Subject: [lmi-commits] [5274] Constrain salary-based specamt as newly documented
Date: Thu, 25 Aug 2011 14:32:52 +0000

Revision: 5274
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5274
Author:   chicares
Date:     2011-08-25 14:32:51 +0000 (Thu, 25 Aug 2011)
Log Message:
-----------
Constrain salary-based specamt as newly documented

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/ihs_avstrtgy.cpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2011-08-24 19:50:15 UTC (rev 5273)
+++ lmi/trunk/ChangeLog 2011-08-25 14:32:51 UTC (rev 5274)
@@ -28417,3 +28417,8 @@
   skin_variable_annuity.xrc
 Add titles to sequence editor dialog.
 
+20110825T1432Z <address@hidden> [615]
+
+  ihs_avstrtgy.cpp
+Constrain salary-based specamt as newly documented.
+

Modified: lmi/trunk/ihs_avstrtgy.cpp
===================================================================
--- lmi/trunk/ihs_avstrtgy.cpp  2011-08-24 19:50:15 UTC (rev 5273)
+++ lmi/trunk/ihs_avstrtgy.cpp  2011-08-25 14:32:51 UTC (rev 5274)
@@ -57,6 +57,21 @@
 /// makes sense to ignore such extra payments; and accepting the
 /// argument for some strategies but not for others would introduce
 /// inconsistency in addition to complexity.
+///
+/// The result of a salary-based strategy is constrained to be
+/// nonnegative, because if 'SalarySpecifiedAmountOffset' is
+/// sufficiently large, then specamt would be negative, which cannot
+/// make any sense. Other than that, no minimum is imposed. A case
+/// could be made for enforcing limits chosen from:
+///   DB_MinIssSpecAmt
+///   DB_MinRenlSpecAmt
+///   DB_MinRenlBaseSpecAmt
+///   DB_MaxIssSpecAmt
+///   DB_MaxRenlSpecAmt
+/// but that should be done unconditionally elsewhere; furthermore,
+/// either 'DB_MinRenlSpecAmt' or 'DB_MinRenlBaseSpecAmt' might apply,
+/// depending on whether the term rider remains in force--which can be
+/// ascertained only during monthiversary processing.
 
 double AccountValue::CalculateSpecAmtFromStrategy
     (int actual_year
@@ -88,7 +103,7 @@
                 y = std::min(y, yare_input_.SalarySpecifiedAmountCap);
                 }
             y -= yare_input_.SalarySpecifiedAmountOffset;
-            z = y;
+            z = std::max(0.0, y);
             }
             break;
         case mce_sa_input_scalar:




reply via email to

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