lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5310] Pass target premium to 7702 object prn, but don't u


From: Greg Chicares
Subject: [lmi-commits] [5310] Pass target premium to 7702 object prn, but don't use it yet
Date: Sat, 19 Nov 2011 20:05:42 +0000

Revision: 5310
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5310
Author:   chicares
Date:     2011-11-19 20:05:41 +0000 (Sat, 19 Nov 2011)
Log Message:
-----------
Pass target premium to 7702 object prn, but don't use it yet

Modified Paths:
--------------
    lmi/trunk/ihs_acctval.cpp
    lmi/trunk/ihs_avmly.cpp
    lmi/trunk/ihs_irc7702.cpp
    lmi/trunk/ihs_irc7702.hpp

Modified: lmi/trunk/ihs_acctval.cpp
===================================================================
--- lmi/trunk/ihs_acctval.cpp   2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_acctval.cpp   2011-11-19 20:05:41 UTC (rev 5310)
@@ -454,10 +454,16 @@
     // TODO ?? We need to reconsider where the Irc7702 object gets created.
     // Perhaps it should be when initial DB is first known? No, needed for
     // solves. Then maybe we only need to move the call to Initialize7702?
+    double annual_target_premium = GetModalTgtPrem
+        (0
+        ,mce_annual
+        ,InvariantValues().SpecAmt[0]
+        );
     Irc7702_->Initialize7702
         (InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0]
         ,InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0]
         ,effective_dbopt_7702(InvariantValues().DBOpt[0].value(), 
Equiv7702DBO3)
+        ,annual_target_premium
         );
 
     // JOE--Try this instead of your second change to ldginvar.cpp

Modified: lmi/trunk/ihs_avmly.cpp
===================================================================
--- lmi/trunk/ihs_avmly.cpp     2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_avmly.cpp     2011-11-19 20:05:41 UTC (rev 5310)
@@ -1145,6 +1145,7 @@
             ,OldSA
             ,new_dbopt
             ,old_dbopt
+            ,AnnualTargetPrem
             );
         }
 

Modified: lmi/trunk/ihs_irc7702.cpp
===================================================================
--- lmi/trunk/ihs_irc7702.cpp   2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_irc7702.cpp   2011-11-19 20:05:41 UTC (rev 5310)
@@ -179,6 +179,7 @@
 {
     LMI_ASSERT(a_PresentSpecAmt <= a_PresentBftAmt);
     LMI_ASSERT(a_PriorSpecAmt <= a_PriorBftAmt);
+    LMI_ASSERT(0.0 <= a_TargetPremium);
     // TODO ?? Instead put these in initializer-list and write assertions?
     if(0 == InforceDuration)
         {
@@ -275,6 +276,7 @@
     ,double            a_PriorSpecAmt
     ,mcenum_dbopt_7702 a_NewDBOpt
     ,mcenum_dbopt_7702 a_PriorDBOpt
+    ,double            a_TargetPremium
     )
 {
     LMI_ASSERT(a_PriorSpecAmt <= a_PriorBftAmt);
@@ -285,6 +287,7 @@
 // as DB as of the last adjustment event.
     LMI_ASSERT(materially_equal(PresentSpecAmt, a_PriorSpecAmt));
     LMI_ASSERT(PresentDBOpt == a_PriorDBOpt);
+    LMI_ASSERT(0.0 <= a_TargetPremium);
     // Should be called only when something actually changed: either
     //   dbopt changed; or
     //   specamt changed, causing an actual change in bftamt.
@@ -302,13 +305,14 @@
         ;
     LMI_ASSERT(adj_event);
 
-    // Post BftAmt, SpecAmt, DBOpt changes to local state.
+    // Post target and {BftAmt, SpecAmt, DBOpt} changes to local state.
     PriorBftAmt     = PresentBftAmt;
     PresentBftAmt   = a_NewBftAmt;
     PriorSpecAmt    = PresentSpecAmt;
     PresentSpecAmt  = a_NewSpecAmt;
     PriorDBOpt      = PresentDBOpt;
     PresentDBOpt    = a_NewDBOpt;
+    TargetPremium   = a_TargetPremium;
 
     // Apply A + B - C method for both GLP and GSP.
 
@@ -711,15 +715,18 @@
     (double            a_BftAmt
     ,double            a_SpecAmt
     ,mcenum_dbopt_7702 a_DBOpt
+    ,double            a_TargetPremium
     )
 {
     LMI_ASSERT(a_SpecAmt <= a_BftAmt);
+    LMI_ASSERT(0.0 <= a_TargetPremium);
     PresentDBOpt        = a_DBOpt;
     PriorDBOpt          = PresentDBOpt;
     Initialize7702(a_SpecAmt);
     PresentBftAmt       = a_BftAmt;
     PriorBftAmt         = PresentBftAmt;
-    LeastBftAmtEver     = PresentBftAmt;
+    LeastBftAmtEver     = PresentBftAmt; // was set to PresentSpecAmt by 
Initialize7702(a_SpecAmt); what if DB != SA?
+    TargetPremium       = a_TargetPremium;
     PresentGLP = CalculateGLP
         (InforceDuration    // TODO ?? a_Duration...what if inforce?
         ,PresentBftAmt
@@ -884,15 +891,16 @@
     //
     // TODO ?? It's also correct only if the supplied target premium
     // is correct.
-//    double target = TargetPremium;
-
+#if 0
+    double target = TargetPremium;
+#else // About to be removed:
     double target = Values.GetTgtPrem
         (a_Duration
         ,a_SpecAmt
-        ,mce_option1 // TODO ?? Should pass dbopt.
+        ,mce_option1 // Should pass dbopt [marked as a defect below].
         ,mce_annual
         );
-
+#endif
     double z =
         (   DEndt[a_EIOBasis] * a_LeastBftAmtEver
         +   PvChgPol[a_EIOBasis][a_Duration]
@@ -1023,6 +1031,12 @@
             {
             SpecAmt = a_Trial;
             Irc7702_.Initialize7702(a_Trial);
+            const_cast<double&>(Irc7702_.TargetPremium) = 
Irc7702_.Values.GetTgtPrem
+                (Duration
+                ,SpecAmt
+                ,mce_option1 // TODO ?? Should pass dbopt.
+                ,mce_annual
+                );
             return
                     Irc7702_.CalculatePremium
                         (EIOBasis_

Modified: lmi/trunk/ihs_irc7702.hpp
===================================================================
--- lmi/trunk/ihs_irc7702.hpp   2011-11-19 13:29:31 UTC (rev 5309)
+++ lmi/trunk/ihs_irc7702.hpp   2011-11-19 20:05:41 UTC (rev 5310)
@@ -105,6 +105,7 @@
         (double                     a_BftAmt
         ,double                     a_SpecAmt
         ,mcenum_dbopt_7702          a_DBOpt
+        ,double                     a_TargetPremium
         );
     void UpdateBOY7702();
     void ProcessGptPmt
@@ -121,6 +122,7 @@
         ,double                     a_PriorSpecAmt
         ,mcenum_dbopt_7702          a_NewDBOpt
         ,mcenum_dbopt_7702          a_PriorDBOpt
+        ,double                     a_TargetPremium
         );
     double Forceout();
 
@@ -220,7 +222,7 @@
 
     std::vector<double> const& LoadTgt;    // Premium load up to target
     std::vector<double> const& LoadExc;    // Premium load on excess over 
target
-    double const               TargetPremium;
+    double                     TargetPremium;
 
     round_to<double>           round_min_premium;
     round_to<double>           round_max_premium;




reply via email to

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