lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master fd6ea84 3/4: Specify certain calculations for


From: Greg Chicares
Subject: [lmi-commits] [lmi] master fd6ea84 3/4: Specify certain calculations for the new MDB DBO
Date: Fri, 2 Nov 2018 07:42:53 -0400 (EDT)

branch: master
commit fd6ea844470ddf59a557cd9f0fc184583a7efc59
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Specify certain calculations for the new MDB DBO
---
 ihs_avmly.cpp | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/ihs_avmly.cpp b/ihs_avmly.cpp
index d9bee90..651d20c 100644
--- a/ihs_avmly.cpp
+++ b/ihs_avmly.cpp
@@ -875,9 +875,14 @@ void AccountValue::TxOptionChange()
                     {
                     ChangeSpecAmtBy(std::max(0.0, CumPmts));
                     }
-                else if(mce_mdb == old_option) // DBO3 !! reconsider
+                else if(mce_mdb == old_option)
                     {
-                    alarum() << "MDB DBO not yet implemented." << LMI_FLUSH;
+                    // Do nothing. An argument could be made for this
+                    // alternative:
+                    //   TxSetDeathBft(); // update DBReflectingCorr
+                    //   ChangeSpecAmtBy(std::max(0.0, DBReflectingCorr));
+                    // but that takes more work and is not clearly
+                    // preferable.
                     }
                 else
                     {
@@ -912,9 +917,10 @@ void AccountValue::TxOptionChange()
                 // Do nothing.
                 }
             break;
-        case mce_mdb: // DBO3 !! reconsider
+        case mce_mdb:
             {
-            alarum() << "MDB DBO not yet implemented." << LMI_FLUSH;
+            // Change spec amt by its additive inverse, making it 0.
+            ChangeSpecAmtBy(-(ActualSpecAmt + TermSpecAmt));
             }
             break;
         }
@@ -1610,9 +1616,13 @@ void AccountValue::TxSetDeathBft()
             DB7702A        = ActualSpecAmt + std::max(0.0, CumPmts);
             }
             break;
-        case mce_mdb: // DBO3 !! reconsider
+        case mce_mdb:
             {
-            alarum() << "MDB DBO not yet implemented." << LMI_FLUSH;
+            // Specamt is a floor under DB (and therefore zero here)
+            // because this option defines the DB as the minimum
+            // required by the corridor (but not less than zero).
+            DBIgnoringCorr = 0.0;
+            DB7702A        = 0.0;
             }
             break;
         }
@@ -2541,9 +2551,11 @@ void AccountValue::TxTakeWD()
                 }
             }
             break;
-        case mce_mdb: // DBO3 !! reconsider
+        case mce_mdb:
             {
-            alarum() << "MDB DBO not yet implemented." << LMI_FLUSH;
+            // Do nothing. Every other DBO conditionally decreases the
+            // specamt, but the mce_mdb specamt is zero by definition
+            // and cannot be decreased.
             }
             break;
         }



reply via email to

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