lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5707] Calculate loads with maximum as well as minimum pre


From: Greg Chicares
Subject: [lmi-commits] [5707] Calculate loads with maximum as well as minimum premium tax
Date: Fri, 19 Apr 2013 14:09:18 +0000

Revision: 5707
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5707
Author:   chicares
Date:     2013-04-19 14:09:17 +0000 (Fri, 19 Apr 2013)
Log Message:
-----------
Calculate loads with maximum as well as minimum premium tax

Modified Paths:
--------------
    lmi/trunk/loads.cpp
    lmi/trunk/loads.hpp
    lmi/trunk/loads_impl.hpp
    lmi/trunk/loads_test.cpp

Modified: lmi/trunk/loads.cpp
===================================================================
--- lmi/trunk/loads.cpp 2013-04-19 13:46:17 UTC (rev 5706)
+++ lmi/trunk/loads.cpp 2013-04-19 14:09:17 UTC (rev 5707)
@@ -56,6 +56,7 @@
         (length
         ,V.yare_input_.AmortizePremiumLoad
         ,V.PremiumTax_->load_rate()
+        ,V.PremiumTax_->maximum_load_rate()
         ,V.PremiumTax_->minimum_load_rate()
         ,V.PremiumTax_->levy_rate()
         ,V.Database_->Query(DB_PremTaxAmortIntRate)
@@ -115,6 +116,8 @@
 
     target_premium_load_excluding_premium_tax_.resize(length);
     excess_premium_load_excluding_premium_tax_.resize(length);
+    target_premium_load_maximum_premium_tax_  .resize(length);
+    excess_premium_load_maximum_premium_tax_  .resize(length);
     target_premium_load_minimum_premium_tax_  .resize(length);
     excess_premium_load_minimum_premium_tax_  .resize(length);
 }
@@ -251,6 +254,8 @@
         if(mce_gen_curr == j)
             {
             target_premium_load_excluding_premium_tax_ = target_total_load_[j];
+            target_premium_load_maximum_premium_tax_   = target_total_load_[j];
+            target_premium_load_maximum_premium_tax_  += 
details.maximum_premium_tax_load_rate_;
             target_premium_load_minimum_premium_tax_   = target_total_load_[j];
             target_premium_load_minimum_premium_tax_  += 
details.minimum_premium_tax_load_rate_;
             }
@@ -262,6 +267,8 @@
         if(mce_gen_curr == j)
             {
             excess_premium_load_excluding_premium_tax_ = excess_total_load_[j];
+            excess_premium_load_maximum_premium_tax_   = excess_total_load_[j];
+            excess_premium_load_maximum_premium_tax_  += 
details.maximum_premium_tax_load_rate_;
             excess_premium_load_minimum_premium_tax_   = excess_total_load_[j];
             excess_premium_load_minimum_premium_tax_  += 
details.minimum_premium_tax_load_rate_;
             }

Modified: lmi/trunk/loads.hpp
===================================================================
--- lmi/trunk/loads.hpp 2013-04-19 13:46:17 UTC (rev 5706)
+++ lmi/trunk/loads.hpp 2013-04-19 14:09:17 UTC (rev 5707)
@@ -68,6 +68,8 @@
 
     std::vector<double> const& target_premium_load_excluding_premium_tax() 
const;
     std::vector<double> const& excess_premium_load_excluding_premium_tax() 
const;
+    std::vector<double> const& target_premium_load_maximum_premium_tax() const;
+    std::vector<double> const& excess_premium_load_maximum_premium_tax() const;
     std::vector<double> const& target_premium_load_minimum_premium_tax() const;
     std::vector<double> const& excess_premium_load_minimum_premium_tax() const;
 
@@ -99,6 +101,8 @@
 
     std::vector<double> target_premium_load_excluding_premium_tax_;
     std::vector<double> excess_premium_load_excluding_premium_tax_;
+    std::vector<double> target_premium_load_maximum_premium_tax_;
+    std::vector<double> excess_premium_load_maximum_premium_tax_;
     std::vector<double> target_premium_load_minimum_premium_tax_;
     std::vector<double> excess_premium_load_minimum_premium_tax_;
 };
@@ -200,6 +204,18 @@
 }
 
 inline std::vector<double> const&
+Loads::target_premium_load_maximum_premium_tax() const
+{
+    return target_premium_load_maximum_premium_tax_;
+}
+
+inline std::vector<double> const&
+Loads::excess_premium_load_maximum_premium_tax() const
+{
+    return excess_premium_load_maximum_premium_tax_;
+}
+
+inline std::vector<double> const&
 Loads::target_premium_load_minimum_premium_tax() const
 {
     return target_premium_load_minimum_premium_tax_;

Modified: lmi/trunk/loads_impl.hpp
===================================================================
--- lmi/trunk/loads_impl.hpp    2013-04-19 13:46:17 UTC (rev 5706)
+++ lmi/trunk/loads_impl.hpp    2013-04-19 14:09:17 UTC (rev 5707)
@@ -46,6 +46,10 @@
 ///
 /// premium_tax_load_: Scalar premium-tax load (zero if tiered).
 ///
+/// maximum_premium_tax_load_rate_: The highest rate of premium tax.
+/// Products that pass premium tax through as a load need this for
+/// pay-as-you-go premiums. The actual rate may differ if tiered.
+///
 /// minimum_premium_tax_load_rate_: The lowest rate of premium tax.
 /// Products that pass premium tax through as a load need this for
 /// 7702 calculations. The actual rate may differ if tiered.
@@ -84,6 +88,7 @@
         (int                        length
         ,bool                       AmortizePremLoad
         ,double                     premium_tax_load
+        ,double                     maximum_premium_tax_load_rate
         ,double                     minimum_premium_tax_load_rate
         ,double                     premium_tax_rate
         ,double                     premium_tax_amortization_rate
@@ -100,6 +105,7 @@
         :length_                          (length)
         ,AmortizePremLoad_                (AmortizePremLoad)
         ,premium_tax_load_                (premium_tax_load)
+        ,maximum_premium_tax_load_rate_   (maximum_premium_tax_load_rate)
         ,minimum_premium_tax_load_rate_   (minimum_premium_tax_load_rate)
         ,premium_tax_rate_                (premium_tax_rate)
         ,premium_tax_amortization_rate_   (premium_tax_amortization_rate)
@@ -117,6 +123,7 @@
     int                        length_;
     bool                       AmortizePremLoad_;
     double                     premium_tax_load_;
+    double                     maximum_premium_tax_load_rate_;
     double                     minimum_premium_tax_load_rate_;
     double                     premium_tax_rate_;
     double                     premium_tax_amortization_rate_;

Modified: lmi/trunk/loads_test.cpp
===================================================================
--- lmi/trunk/loads_test.cpp    2013-04-19 13:46:17 UTC (rev 5706)
+++ lmi/trunk/loads_test.cpp    2013-04-19 14:09:17 UTC (rev 5707)
@@ -63,6 +63,7 @@
 #include "premium_tax.hpp"
 double premium_tax::levy_rate        () const {return 0.0;}
 double premium_tax::load_rate        () const {return 0.0;}
+double premium_tax::maximum_load_rate() const {return 0.0;}
 double premium_tax::minimum_load_rate() const {return 0.0;}
 
 struct LoadsTest
@@ -122,6 +123,8 @@
     INVOKE_BOOST_TEST_EQUAL(z, loads_.dac_tax_load                             
().size(), file, line);
     INVOKE_BOOST_TEST_EQUAL(z, 
loads_.target_premium_load_excluding_premium_tax().size(), file, line);
     INVOKE_BOOST_TEST_EQUAL(z, 
loads_.excess_premium_load_excluding_premium_tax().size(), file, line);
+    INVOKE_BOOST_TEST_EQUAL(z, loads_.target_premium_load_maximum_premium_tax  
().size(), file, line);
+    INVOKE_BOOST_TEST_EQUAL(z, loads_.excess_premium_load_maximum_premium_tax  
().size(), file, line);
     INVOKE_BOOST_TEST_EQUAL(z, loads_.target_premium_load_minimum_premium_tax  
().size(), file, line);
     INVOKE_BOOST_TEST_EQUAL(z, loads_.excess_premium_load_minimum_premium_tax  
().size(), file, line);
 
@@ -188,6 +191,8 @@
     INVOKE_BOOST_TEST(materially_equal(0.103000, loads_.excess_total_load     
(mce_gen_curr)[0]), file, line);
     INVOKE_BOOST_TEST(materially_equal(0.142000, 
loads_.target_premium_load_excluding_premium_tax()[0]), file, line);
     INVOKE_BOOST_TEST(materially_equal(0.082000, 
loads_.excess_premium_load_excluding_premium_tax()[0]), file, line);
+    INVOKE_BOOST_TEST(materially_equal(0.164000, 
loads_.target_premium_load_maximum_premium_tax  ()[0]), file, line);
+    INVOKE_BOOST_TEST(materially_equal(0.104000, 
loads_.excess_premium_load_maximum_premium_tax  ()[0]), file, line);
     INVOKE_BOOST_TEST(materially_equal(0.162000, 
loads_.target_premium_load_minimum_premium_tax  ()[0]), file, line);
     INVOKE_BOOST_TEST(materially_equal(0.102000, 
loads_.excess_premium_load_minimum_premium_tax  ()[0]), file, line);
 }
@@ -205,6 +210,7 @@
         (length                 // length_
         ,false                  // AmortizePremLoad_
         ,0.021                  // premium_tax_load_
+        ,0.022                  // maximum_premium_tax_load_rate_
         ,0.02                   // minimum_premium_tax_load_rate_
         ,999.999                // premium_tax_rate_                [unused]
         ,999.999                // premium_tax_amortization_rate_   [unused]




reply via email to

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