lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5000] Refactor, indigitating a defect


From: Greg Chicares
Subject: [lmi-commits] [5000] Refactor, indigitating a defect
Date: Mon, 21 Jun 2010 17:21:17 +0000

Revision: 5000
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5000
Author:   chicares
Date:     2010-06-21 17:21:16 +0000 (Mon, 21 Jun 2010)
Log Message:
-----------
Refactor, indigitating a defect

Modified Paths:
--------------
    lmi/trunk/ihs_irc7702a.cpp

Modified: lmi/trunk/ihs_irc7702a.cpp
===================================================================
--- lmi/trunk/ihs_irc7702a.cpp  2010-06-21 15:49:37 UTC (rev 4999)
+++ lmi/trunk/ihs_irc7702a.cpp  2010-06-21 17:21:16 UTC (rev 5000)
@@ -278,6 +278,9 @@
         Pmts[j * months_per_year] = a_Pmts[j];
         }
     HOPEFULLY(a_Bfts.size() <= max_years);
+// UpdateBft7702A() updates this, thus:
+//    Bfts[TestPeriodDur] = current_bft;
+// so should we make sure Bfts[TestPeriodDur] is zero here?
     for(unsigned int j = 0; j < a_Bfts.size(); ++j)
         {
         for(int k = 0; k < months_per_year; ++k)
@@ -291,12 +294,13 @@
     AssumedBft      = a_LowestBft; // TODO ?? Is this needed? Is it not always 
Bfts[0]?
     LowestBft       = a_LowestBft;
 
-    HOPEFULLY
-        (   static_cast<unsigned int>(PolicyYear - a_ContractYear)
-        <   SevenPPRateVec.size()
-        );
-    Saved7PPRate       = SevenPPRateVec[std::max(0, PolicyYear - 
a_ContractYear)];
-    state_.B2_deduced_px7_rate = SevenPPRateVec[std::max(0, PolicyYear - 
a_ContractYear)];
+    // This is wrong, because we don't know whether the last MC
+    // occurred before or after the anniversary:
+    unsigned int duration_of_last_mc = PolicyYear - a_ContractYear;
+    HOPEFULLY(duration_of_last_mc < SevenPPRateVec.size());
+    duration_of_last_mc = std::max(0U, duration_of_last_mc);
+    Saved7PPRate    = SevenPPRateVec[duration_of_last_mc];
+    state_.B2_deduced_px7_rate = SevenPPRateVec[duration_of_last_mc];
     SavedNecPrem    = 0.0;
     UnnecPrem       = 0.0;
     SavedNSP        = NSPVec[PolicyYear]; // TODO ?? Ignores interpolation.
@@ -1333,6 +1337,7 @@
         ,Bfts.begin() + std::min(TestPeriodLen, TestPeriodDur)
         );
     LMI_ASSERT(Bfts.begin() <= last_bft_in_test_period);
+// This is harmful for inforce if inforce history is unreliable:
     LowestBft = *std::min_element(Bfts.begin(), last_bft_in_test_period);
     return LowestBft;
 }




reply via email to

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