lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5177] Refine and move retaliation criteria


From: Greg Chicares
Subject: [lmi-commits] [5177] Refine and move retaliation criteria
Date: Mon, 23 May 2011 13:11:16 +0000

Revision: 5177
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5177
Author:   chicares
Date:     2011-05-23 13:11:15 +0000 (Mon, 23 May 2011)
Log Message:
-----------
Refine and move retaliation criteria

Modified Paths:
--------------
    lmi/trunk/basic_values.hpp
    lmi/trunk/ihs_avmly.cpp
    lmi/trunk/ihs_basicval.cpp

Modified: lmi/trunk/basic_values.hpp
===================================================================
--- lmi/trunk/basic_values.hpp  2011-05-23 10:58:40 UTC (rev 5176)
+++ lmi/trunk/basic_values.hpp  2011-05-23 13:11:15 UTC (rev 5177)
@@ -372,6 +372,7 @@
 
     bool                    PremiumTaxLoadIsTieredInStateOfDomicile_;
     bool                    PremiumTaxLoadIsTieredInPremiumTaxState_;
+    bool                    premium_tax_is_retaliatory_;
 
   private:
     void SetPremiumTaxParameters();
@@ -532,6 +533,11 @@
     return IsSubjectToIllustrationReg_;
 }
 
+bool premium_tax_is_retaliatory
+    (mcenum_state premium_tax_state
+    ,mcenum_state state_of_domicile
+    );
+
 double lowest_premium_tax_load
     (product_database   const& db
     ,stratified_charges const& stratified

Modified: lmi/trunk/ihs_avmly.cpp
===================================================================
--- lmi/trunk/ihs_avmly.cpp     2011-05-23 10:58:40 UTC (rev 5176)
+++ lmi/trunk/ihs_avmly.cpp     2011-05-23 13:11:15 UTC (rev 5177)
@@ -1515,28 +1515,8 @@
         }
     YearsTotalPremTaxLoadInPremiumTaxState += tax_in_premium_tax_state;
 
-    // Obviously this determination should be made only once, and not here.
-    // 
http://leg2.state.va.us/dls/h&sdocs.nsf/fc86c2b17a1cf388852570f9006f1299/461afa310d4d3d528525646500562282/$FILE/HD78_1997.pdf
-    std::vector<mcenum_state> reciprocal_nonretaliation_states;
-    reciprocal_nonretaliation_states.push_back(mce_s_HI);
-    reciprocal_nonretaliation_states.push_back(mce_s_MA);
-    reciprocal_nonretaliation_states.push_back(mce_s_MN);
-    reciprocal_nonretaliation_states.push_back(mce_s_NY);
-    reciprocal_nonretaliation_states.push_back(mce_s_RI);
-    bool forbear_retaliation =
-            contains(reciprocal_nonretaliation_states, GetStateOfDomicile())
-        &&  contains(reciprocal_nonretaliation_states, GetPremiumTaxState())
-        ;
-
-    // Obviously this determination should be made only once, and not here.
-    bool FirstYearPremiumExceedsRetaliationLimit =
-            mce_s_AK == GetPremiumTaxState()
-        ||  mce_s_SD == GetPremiumTaxState()
-        ||  mce_s_XX == GetPremiumTaxState()
-        ;
-
     double tax_in_state_of_domicile = 0.0;
-    if(!FirstYearPremiumExceedsRetaliationLimit && !forbear_retaliation)
+    if(premium_tax_is_retaliatory_)
         {
         tax_in_state_of_domicile = DomiciliaryPremiumTaxLoad() * payment;
         if(PremiumTaxLoadIsTieredInStateOfDomicile_)

Modified: lmi/trunk/ihs_basicval.cpp
===================================================================
--- lmi/trunk/ihs_basicval.cpp  2011-05-23 10:58:40 UTC (rev 5176)
+++ lmi/trunk/ihs_basicval.cpp  2011-05-23 13:11:15 UTC (rev 5177)
@@ -824,6 +824,11 @@
     PremiumTaxLoadIsTieredInStateOfDomicile_ = 
StratifiedCharges_->premium_tax_is_tiered(GetStateOfDomicile());
     PremiumTaxLoadIsTieredInPremiumTaxState_ = 
StratifiedCharges_->premium_tax_is_tiered(GetPremiumTaxState());
 
+    premium_tax_is_retaliatory_ = premium_tax_is_retaliatory
+        (GetPremiumTaxState()
+        ,GetStateOfDomicile()
+        );
+
     LowestPremiumTaxLoad_ = lowest_premium_tax_load
         (*Database_
         ,*StratifiedCharges_
@@ -850,6 +855,40 @@
     TestPremiumTaxLoadConsistency();
 }
 
+/// Determine whether premium tax is retaliatory.
+///
+/// Here's a general discussion:
+///   
http://leg2.state.va.us/dls/h&sdocs.nsf/fc86c2b17a1cf388852570f9006f1299/461afa310d4d3d528525646500562282/$FILE/HD78_1997.pdf
+///
+/// Premium tax is retaliatory in most states. Exceptions:
+///   - MA, MN, NY, and RI are mutually nonretaliatory.
+///   - HI never retaliates; neither does fictitious state XX.
+///   - AK and SD retaliate only on the bottom tier; this is best
+///     implemented by adjusting that tier's rate and treating them
+///     as otherwise nonretaliatory.
+
+bool premium_tax_is_retaliatory
+    (mcenum_state premium_tax_state
+    ,mcenum_state state_of_domicile
+    )
+{
+    static int const n = 4;
+    static mcenum_state const d[n] = {mce_s_MA, mce_s_MN, mce_s_NY, mce_s_RI};
+    static std::vector<mcenum_state> const reciprocal_nonretaliation_states(d, 
d + n);
+    bool const reciprocally_nonretaliatory =
+            contains(reciprocal_nonretaliation_states, state_of_domicile)
+        &&  contains(reciprocal_nonretaliation_states, premium_tax_state)
+        ;
+    bool const nonretaliatory =
+            reciprocally_nonretaliatory
+        ||  mce_s_HI == premium_tax_state
+        ||  mce_s_XX == premium_tax_state
+        ||  mce_s_AK == premium_tax_state
+        ||  mce_s_SD == premium_tax_state
+        ;
+    return !nonretaliatory;
+}
+
 /// Lowest premium-tax load, for 7702 and 7702A purposes.
 
 double lowest_premium_tax_load




reply via email to

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