[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [5272] Improve layout and documentation
From: |
Greg Chicares |
Subject: |
[lmi-commits] [5272] Improve layout and documentation |
Date: |
Wed, 24 Aug 2011 17:06:42 +0000 |
Revision: 5272
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5272
Author: chicares
Date: 2011-08-24 17:06:42 +0000 (Wed, 24 Aug 2011)
Log Message:
-----------
Improve layout and documentation
Modified Paths:
--------------
lmi/trunk/ChangeLog
lmi/trunk/ihs_avstrtgy.cpp
Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2011-08-24 16:59:15 UTC (rev 5271)
+++ lmi/trunk/ChangeLog 2011-08-24 17:06:42 UTC (rev 5272)
@@ -28375,3 +28375,35 @@
skin.xrc
Add a missing input field.
+20110823T1220Z <address@hidden> [622]
+
+ skin.xrc
+Clarify solve-basis radiobox labels.
+
+20110824T1639Z <address@hidden> [622]
+
+ ledger_text_formats.cpp
+Remove unneeded headers.
+
+20110824T1645Z <address@hidden> [617]
+
+ input_harmonization.cpp
+Expunge unused legacy code.
+
+20110824T1649Z <address@hidden> [617]
+
+ input.hpp
+ mec_input.hpp
+Expunge disused declarations.
+
+20110824T1659Z <address@hidden> [617]
+
+ ihs_avstrtgy.cpp
+Fix defect introduced 20080720T2217Z: don't apply a specamt strategy
+when solving for specamt.
+
+20110824T1706Z <address@hidden> [615]
+
+ ihs_avstrtgy.cpp
+Improve layout and documentation.
+
Modified: lmi/trunk/ihs_avstrtgy.cpp
===================================================================
--- lmi/trunk/ihs_avstrtgy.cpp 2011-08-24 16:59:15 UTC (rev 5271)
+++ lmi/trunk/ihs_avstrtgy.cpp 2011-08-24 17:06:42 UTC (rev 5272)
@@ -36,20 +36,27 @@
#include <algorithm>
#include <utility>
-// Set premium or spec amount according to fixed relationships
-// e.g. if prem is target for given spec amt, then given either
-// we can determine for the other.
-
-// TODO ?? Known defects
-//
-// Premium and specamt are either literal dollar amounts, or enums indicating
-// strategy, encoded by multiplying the enum value by 1.0E100. This is most
-// regrettable. Bugs probably lurk here.
-//
-// There are two functions for specamt strategy; apparently only the one
-// called "Old" is used.
-
/// Set specamt according to selected strategy in a non-solve year.
+///
+/// Argument 'actual_year' is policy year.
+///
+/// Argument 'reference_year' specifies which year's premium is the
+/// basis for the calculated specamt. Most often, the first-year
+/// premium is used: it is usually undesirable to change specamt
+/// frequently, and specamt strategies often begin in the first year.
+/// The salary-based strategy, however, tracks salary changes: yearly
+/// increases are common on such plans, and there's no other reason to
+/// enter a non-scalar salary.
+///
+/// Specamt strategies ignore dumpins and 1035 exchanges. An argument
+/// could be made for making adjustments for such extra premiums, but
+/// the benefit doesn't seem to justify the extra complexity. The
+/// argument is strongest for 7702- and 7702A-based strategies, but
+/// there are other and better ways to avoid MECs and GPT problems.
+/// The argument is weaker for the target strategy, for which it often
+/// makes sense to ignore such extra payments; and accepting the
+/// argument for some strategies but not for others would introduce
+/// inconsistency in addition to complexity.
double AccountValue::CalculateSpecAmtFromStrategy
(int actual_year
@@ -72,9 +79,10 @@
{
case mce_sa_salary:
{
- // This ignores yearly-varying salary.
- double y;
- y = yare_input_.ProjectedSalary[actual_year] *
yare_input_.SalarySpecifiedAmountFactor;
+ double y =
+ yare_input_.ProjectedSalary[actual_year]
+ * yare_input_.SalarySpecifiedAmountFactor
+ ;
if(0.0 != yare_input_.SalarySpecifiedAmountCap)
{
y = std::min(y, yare_input_.SalarySpecifiedAmountCap);
@@ -108,7 +116,6 @@
);
}
break;
-// TODO ?? The following strategies (at least) should recognize dumpins.
case mce_sa_mep:
{
z = GetModalSpecAmtMinNonMec
@@ -166,8 +173,7 @@
void AccountValue::PerformSpecAmtStrategy()
{
- for
- (int j = 0; j < BasicValues::Length; ++j)
+ for(int j = 0; j < BasicValues::Length; ++j)
{
double z = round_specamt()(CalculateSpecAmtFromStrategy(j, 0));
DeathBfts_->set_specamt(z, j, 1 + j);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [5272] Improve layout and documentation,
Greg Chicares <=