lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5685] Rearrange and improve documentation


From: Greg Chicares
Subject: [lmi-commits] [5685] Rearrange and improve documentation
Date: Tue, 16 Apr 2013 12:15:24 +0000

Revision: 5685
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5685
Author:   chicares
Date:     2013-04-16 12:15:24 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Rearrange and improve documentation

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/premium_tax.cpp
    lmi/trunk/premium_tax.hpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2013-04-16 12:14:18 UTC (rev 5684)
+++ lmi/trunk/ChangeLog 2013-04-16 12:15:24 UTC (rev 5685)
@@ -32002,3 +32002,19 @@
   toolbar.xrc
 Add a "Print case to disk" toolbar button.
 
+20130416T1213Z <address@hidden> [543]
+
+  dbdict.hpp
+Improve documentation.
+
+20130416T1214Z <address@hidden> [544]
+
+  premium_tax_test.cpp
+Test premium-tax rates.
+
+20130416T1215Z <address@hidden> [544]
+
+  premium_tax.cpp
+  premium_tax.hpp
+Rearrange and improve documentation.
+

Modified: lmi/trunk/premium_tax.cpp
===================================================================
--- lmi/trunk/premium_tax.cpp   2013-04-16 12:14:18 UTC (rev 5684)
+++ lmi/trunk/premium_tax.cpp   2013-04-16 12:15:24 UTC (rev 5685)
@@ -33,10 +33,10 @@
 #include "contains.hpp"
 #include "database.hpp"
 #include "materially_equal.hpp"
-#include "mc_enum_types_aux.hpp" // mc_str()
+#include "mc_enum_types_aux.hpp"        // mc_str()
 #include "stratified_charges.hpp"
 
-#include <algorithm>             // std::max()
+#include <algorithm>                    // std::max()
 
 namespace {
 /// Determine whether premium tax is retaliatory.
@@ -177,8 +177,9 @@
 
 /// Test consistency of premium-tax loads.
 ///
-/// In particular, if the tiered premium-tax load isn't zero, then the
-/// corresponding non-tiered load must be zero.
+/// If the tiered premium-tax load isn't zero, then the corresponding
+/// non-tiered load must be zero, so that the sum of the tiered and
+/// non-tiered portions is the actual load.
 ///
 /// Premium-tax pass-through for AK, DE, and SD insurers is not
 /// supported. If the state of domicile has a tiered rate, then most
@@ -409,8 +410,8 @@
 ///
 /// TAXATION !! No contemporary authority seems to believe that a
 /// change in the premium-tax rate, even if passed through to the
-/// policyowner, is a 7702A material change or a GPT adjustment
-/// event. Therefore, this function will be expunged; but any unique
+/// policyowner, is a 7702A material change or a GPT adjustment event.
+/// Therefore, this function will be expunged; but any unique
 /// commentary or consistency test should be preserved.
 
 double lowest_premium_tax_load
@@ -421,24 +422,6 @@
     ,stratified_charges const& strata
     )
 {
-    // TRICKY !! Here, we use 'DB_PremTaxLoad', not 'DB_PremTaxRate',
-    // to determine the lowest premium-tax load. Premium-tax loads
-    // (charged by the insurer to the contract) and rates (charged by
-    // the state to the insurer) really shouldn't be mixed. The
-    // intention is to support products that pass actual premium tax
-    // through as a load, taking into account retaliation and tiered
-    // premium-tax rates.
-    //
-    // While a more complicated model would be more aesthetically
-    // satisfying, this gives the right answer in practice for the
-    // two cases we believe will arise in practice. In the first case,
-    // premium-tax load doesn't vary by state--perhaps a flat load
-    // such as two percent might be used, or maybe zero percent with
-    // premium-tax expense covered elsewhere in pricing--and tiering
-    // is ignored, so this implementation just returns the flat load.
-    // In the second case, the exact premium tax is passed through,
-    // so the tax rate equals the tax load.
-
     double z = 0.0;
     if(amortize_premium_load)
         {

Modified: lmi/trunk/premium_tax.hpp
===================================================================
--- lmi/trunk/premium_tax.hpp   2013-04-16 12:14:18 UTC (rev 5684)
+++ lmi/trunk/premium_tax.hpp   2013-04-16 12:15:24 UTC (rev 5685)
@@ -26,7 +26,7 @@
 
 #include "config.hpp"
 
-#include "mc_enum_type_enums.hpp" // mcenum_state
+#include "mc_enum_type_enums.hpp"       // mcenum_state
 #include "obstruct_slicing.hpp"
 #include "uncopyable_lmi.hpp"
 
@@ -39,10 +39,31 @@
 ///
 /// Scalar and tiered rates are deliberately maintained in the product
 /// files so that they can be readily examined, transferred to other
-/// systems, and overridden if desired. The values hardcoded here are
-/// generally appropriate, but subject to interpretation because some
-/// states impose assessments in addition to their nominal tax rates.
+/// systems, and overridden if desired. The values hardcoded here and
+/// used as defaults in product files are generally appropriate, but
+/// subject to interpretation because some states impose assessments
+/// in addition to their nominal tax rates.
 ///
+/// Retaliation is handled in the code, so rates specified in the
+/// product database shouldn't reflect retaliation. (If they did, then
+/// different rates would be needed for different domiciles.)
+///
+/// The product database distinguishes premium-tax loads from rates:
+/// 'DB_PremTaxLoad' is the load charged by the insurer against the
+/// contract, while 'DB_PremTaxRate' is the tax rate levied by the
+/// state upon the insurer.
+///
+/// At present, however, '.strata' files contain only the (tiered) tax
+/// rates: there are no distinct tiered tax loads.
+///
+/// Despite that limitation, the correct answer is obtained for the
+/// two cases that have arisen in practice. In the first case, the
+/// premium-tax load doesn't vary by state--perhaps a flat load such
+/// as two percent is used, or maybe zero percent with premium-tax
+/// expense covered elsewhere in pricing--and tiering is ignored, so
+/// the tax load is simply that scalar. In the second case, the exact
+/// premium tax is passed through, so the load equals the tax rate.
+///
 /// Known shortcomings.
 ///
 /// Default values and brackets for tiered rates should be moved here
@@ -59,7 +80,10 @@
 /// been copied here, and portions of 'stratified_charges.cpp' moved
 /// here, retaliation can be made more correct in "tiered" states.
 /// AK and SD retaliate with respect to their initial bands only, but
-/// such retaliation is for now presumed not to occur.
+/// such retaliation is for now presumed not to occur, so AK and SD
+/// domiciles are not supported. Furthermore, retaliation against AK
+/// and SD contracts is not supported, so premium tax is understated
+/// for a few domiciles.
 ///
 /// A greatest-premium-tax-load function is wanted for the approximate
 /// "pay as you go" modal premium (BasicValues::GetModalPremMlyDed()).




reply via email to

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