lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master e4914e9 1/4: dblize() where necessary


From: Greg Chicares
Subject: [lmi-commits] [lmi] master e4914e9 1/4: dblize() where necessary
Date: Mon, 25 Jan 2021 22:13:33 -0500 (EST)

branch: master
commit e4914e9e34ff9423400ab9148771de9492dbd5ac
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    dblize() where necessary
    
    In common cases such as this:
    
    -        InvariantValues().SpecAmt[j] = SA;
    +        InvariantValues().SpecAmt[j] = dblize(SA);
    
    where a currency amount is to be posted to the ledger, for now it must
    be converted to double. In the future, the ledger might hold currency
    amounts as 101 cents rather than $1.01, so that ledger entries can be
    exact integral values as is ardently desired, even though they remain
    of type double for consistency. It will be easy to find and replace all
    such instances on that happy day.
---
 accountvalue.cpp | 20 ++++++------
 basicvalues.cpp  |  4 +--
 gpt_specamt.cpp  |  4 +--
 ihs_acctval.cpp  | 92 ++++++++++++++++++++++++++++----------------------------
 ihs_avmly.cpp    | 66 ++++++++++++++++++++--------------------
 ihs_basicval.cpp |  8 ++---
 6 files changed, 97 insertions(+), 97 deletions(-)

diff --git a/accountvalue.cpp b/accountvalue.cpp
index f878312..8f28f15 100644
--- a/accountvalue.cpp
+++ b/accountvalue.cpp
@@ -338,16 +338,16 @@ void AccountValue::DoYear
             }
         }
 
-    VariantValues().AcctVal[Year] = AVUnloaned + AVRegLn + AVPrfLn;
+    VariantValues().AcctVal[Year] = dblize(AVUnloaned + AVRegLn + AVPrfLn);
     VariantValues().CSVNet[Year] = VariantValues().AcctVal[Year] - 
VariantValues().SurrChg[Year];
     // Update death benefit: "deathbft" currently holds benefit as of the
     //   beginning of month 12, but we want it as of the end of that month,
     //   in case the corridor or option 2 drove it up during the last month.
     TxSetDeathBft();
-    VariantValues().EOYDeathBft[Year] = deathbft;
+    VariantValues().EOYDeathBft[Year] = dblize(deathbft);
 
     // IHS !! Change one of these names, which differ only in the terminal 's'.
-    InvariantValues().GrossPmt[Year] += std::accumulate(GrossPmts.begin(), 
GrossPmts.end(), 0.0);
+    InvariantValues().GrossPmt[Year] += 
dblize(std::accumulate(GrossPmts.begin(), GrossPmts.end(), C0));
     InvariantValues().Outlay[Year] =
             InvariantValues().GrossPmt   [Year]
         -   InvariantValues().NetWD      [Year]
@@ -490,7 +490,7 @@ void AccountValue::PerformSpecAmtStrategy()
 
     for(int j = 0; j < BasicValues::GetLength(); ++j)
         {
-        InvariantValues().SpecAmt[j] = SA;
+        InvariantValues().SpecAmt[j] = dblize(SA);
         }
 }
 
@@ -550,7 +550,7 @@ void AccountValue::TxOptionChange()
     // Carry the new spec amt forward into all future years.
     for(int j = Year; j < BasicValues::GetLength(); ++j)
         {
-        InvariantValues().SpecAmt[j] = ActualSpecAmt;
+        InvariantValues().SpecAmt[j] = dblize(ActualSpecAmt);
         }
 }
 
@@ -582,7 +582,7 @@ void AccountValue::TxSpecAmtChange()
     // Carry the new spec amt forward into all future years.
     for(int j = Year; j < BasicValues::GetLength(); ++j)
         {
-        InvariantValues().SpecAmt[j] = ActualSpecAmt;
+        InvariantValues().SpecAmt[j] = dblize(ActualSpecAmt);
         }
 }
 
@@ -727,7 +727,7 @@ void AccountValue::TxLoanRepay()
 
     AVUnloaned -= RequestedLoan;
     AVRegLn += RequestedLoan;    // IHS !! Preferred loans--see lmi.
-    InvariantValues().NewCashLoan[Year] = RequestedLoan;
+    InvariantValues().NewCashLoan[Year] = dblize(RequestedLoan);
 }
 
 /// Set account value before monthly deductions.
@@ -926,7 +926,7 @@ void AccountValue::TxTakeWD()
             // Carry the new spec amt forward into all future years.
             for(int j = Year; j < BasicValues::GetLength(); ++j)
                 {
-                InvariantValues().SpecAmt[j] = ActualSpecAmt;
+                InvariantValues().SpecAmt[j] = dblize(ActualSpecAmt);
                 }
             }
             break;
@@ -945,7 +945,7 @@ void AccountValue::TxTakeWD()
     wd -= std::min(WDFee, wd * WDFeeRate);
     // IHS !! This treats input WD as gross; it probably should be net. But 
compare lmi.
 
-    InvariantValues().NetWD[Year] = wd;
+    InvariantValues().NetWD[Year] = dblize(wd);
 // IHS !!    TaxBasis -= wd; // Withdrawals are subtracted from basis in lmi.
 }
 
@@ -994,7 +994,7 @@ void AccountValue::TxTakeLoan()
 
     AVUnloaned -= RequestedLoan;
     AVRegLn += RequestedLoan;    // IHS !! Also preferred loans: implemented 
in lmi.
-    InvariantValues().NewCashLoan[Year] = RequestedLoan;
+    InvariantValues().NewCashLoan[Year] = dblize(RequestedLoan);
 }
 
 /// Test for lapse.
diff --git a/basicvalues.cpp b/basicvalues.cpp
index 701b548..8bc1365 100644
--- a/basicvalues.cpp
+++ b/basicvalues.cpp
@@ -195,7 +195,7 @@ currency BasicValues::GetModalTgtPrem
     // IHS !! Implemented better in lmi.
     double Annuity = (1.0 - std::pow(u, 12 / a_mode)) / (1.0 - u);
 
-    double z = a_specamt;
+    double z = dblize(a_specamt);
     z /=
         (   1.0
         +   InterestRates_->GenAcctNetRate
@@ -269,7 +269,7 @@ currency BasicValues::GetModalTgtSpecAmt
         );
     double Annuity = (1.0 - std::pow(u, 12 / a_mode)) / (1.0 - u);
 
-    double z = a_pmt;
+    double z = dblize(a_pmt);
     z /= Annuity;
     z *= 1.0 - Loads_->target_premium_load(mce_gen_curr)[0];
 //    z /= WpRate;
diff --git a/gpt_specamt.cpp b/gpt_specamt.cpp
index 44cf063..50f7202 100644
--- a/gpt_specamt.cpp
+++ b/gpt_specamt.cpp
@@ -108,7 +108,7 @@ class FindSpecAmt
                     ,a_Trial
                     ,NetPmtFactorTgt
                     ,NetPmtFactorExc
-                    ,Values_.GetAnnualTgtPrem(Duration, SpecAmt)
+                    ,dblize(Values_.GetAnnualTgtPrem(Duration, SpecAmt))
                     )
             -   Premium
             ;
@@ -151,7 +151,7 @@ currency gpt_specamt::CalculateSpecAmt
         ,z
         ,a_EIOBasis
         ,a_Duration
-        ,a_Premium
+        ,dblize(a_Premium)
         ,a_NetPmtFactorTgt
         ,a_NetPmtFactorExc
         );
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index 5a2d4e5..ab5aac3 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -424,12 +424,12 @@ void AccountValue::InitializeLife(mcenum_run_basis 
a_Basis)
     SurrChg_.assign(BasicValues::GetLength(), C0);
 
     // TAXATION !! Input::InforceAnnualTargetPremium should be used here.
-    double annual_target_premium = GetModalTgtPrem
+    double annual_target_premium = dblize(GetModalTgtPrem
         (0
         ,mce_annual
         ,base_specamt(0)
-        );
-    double sa = specamt_for_7702(0);
+        ));
+    double sa = dblize(specamt_for_7702(0));
 
     // It is at best superfluous to do this for every basis.
     // TAXATION !! Don't do that then.
@@ -473,7 +473,7 @@ void AccountValue::InitializeLife(mcenum_run_basis a_Basis)
     if(yare_input_.EffectiveDate == yare_input_.InforceAsOfDate)
         {
         // No need to initialize 'pmts_7702a' in this case.
-        bfts_7702a.push_back(specamt_for_7702A(0));
+        bfts_7702a.push_back(dblize(specamt_for_7702A(0)));
         }
     else
         {
@@ -924,7 +924,7 @@ void AccountValue::InitializeSpecAmt()
 
     if(0 == Year)
         {
-        InvariantValues().InitTgtPrem = AnnualTargetPrem;
+        InvariantValues().InitTgtPrem = dblize(AnnualTargetPrem);
         }
 
     // TODO ?? Perform specamt strategy here?
@@ -963,8 +963,8 @@ void AccountValue::set_list_bill_premium()
             ,Outlay_->er_premium_modes()[Year]
             ,base_specamt(Year)
             );
-        InvariantValues().ListBillPremium   = z;
-        InvariantValues().ErListBillPremium = z;
+        InvariantValues().ListBillPremium   = dblize(z);
+        InvariantValues().ErListBillPremium = dblize(z);
         }
     else
         {
@@ -974,9 +974,9 @@ void AccountValue::set_list_bill_premium()
             ,base_specamt(Year)
             ,term_specamt(Year)
             );
-        InvariantValues().EeListBillPremium = z.first;
-        InvariantValues().ErListBillPremium = z.second;
-        InvariantValues().ListBillPremium = z.first + z.second;
+        InvariantValues().EeListBillPremium = dblize(z.first);
+        InvariantValues().ErListBillPremium = dblize(z.second);
+        InvariantValues().ListBillPremium = dblize(z.first + z.second);
         }
 }
 
@@ -1001,8 +1001,8 @@ void AccountValue::set_modal_min_premium()
             ,Outlay_->er_premium_modes()[Year]
             ,base_specamt(Year)
             );
-        InvariantValues().ModalMinimumPremium[Year]   = z;
-        InvariantValues().ErModalMinimumPremium[Year] = z;
+        InvariantValues().ModalMinimumPremium[Year]   = dblize(z);
+        InvariantValues().ErModalMinimumPremium[Year] = dblize(z);
         }
     else
         {
@@ -1012,9 +1012,9 @@ void AccountValue::set_modal_min_premium()
             ,base_specamt(Year)
             ,term_specamt(Year)
             );
-        InvariantValues().EeModalMinimumPremium[Year] = z.first;
-        InvariantValues().ErModalMinimumPremium[Year] = z.second;
-        InvariantValues().ModalMinimumPremium[Year] = z.first + z.second;
+        InvariantValues().EeModalMinimumPremium[Year] = dblize(z.first);
+        InvariantValues().ErModalMinimumPremium[Year] = dblize(z.second);
+        InvariantValues().ModalMinimumPremium[Year] = dblize(z.first + 
z.second);
         }
 }
 
@@ -1130,8 +1130,8 @@ void AccountValue::SetProjectedCoiCharge()
     TxSetDeathBft();
     TxSetTermAmt();
     double this_years_terminal_naar = material_difference
-        (DBReflectingCorr + TermDB
-        ,TotalAccountValue()
+        (dblize(DBReflectingCorr + TermDB)
+        ,dblize(TotalAccountValue())
         );
     this_years_terminal_naar = std::max(0.0, this_years_terminal_naar);
     double next_years_coi_rate = GetBandedCoiRates(GenBasis_, ActualSpecAmt)[1 
+ Year];
@@ -1165,7 +1165,7 @@ void AccountValue::SetProjectedCoiCharge()
 
 void AccountValue::FinalizeYear()
 {
-    VariantValues().TotalLoanBalance[Year] = RegLnBal + PrfLnBal;
+    VariantValues().TotalLoanBalance[Year] = dblize(RegLnBal + PrfLnBal);
 
     double total_av = TotalAccountValue();
     double surr_chg = SurrChg();
@@ -1221,12 +1221,12 @@ void AccountValue::FinalizeYear()
         }
     cv_7702 = std::max(cv_7702, HoneymoonValue);
 
-    VariantValues().AcctVal     [Year] = total_av;
-    VariantValues().AVGenAcct   [Year] = AVGenAcct + AVRegLn + AVPrfLn;
-    VariantValues().AVSepAcct   [Year] = AVSepAcct;
+    VariantValues().AcctVal     [Year] = dblize(total_av);
+    VariantValues().AVGenAcct   [Year] = dblize(AVGenAcct + AVRegLn + AVPrfLn);
+    VariantValues().AVSepAcct   [Year] = dblize(AVSepAcct);
     VariantValues().DacTaxRsv   [Year] = DacTaxRsv;
-    VariantValues().CSVNet      [Year] = csv_net;
-    VariantValues().CV7702      [Year] = cv_7702;
+    VariantValues().CSVNet      [Year] = dblize(csv_net);
+    VariantValues().CV7702      [Year] = dblize(cv_7702);
 
     // Update death benefit. 'DBReflectingCorr' currently equals the
     // death benefit as of the beginning of the twelfth month, but its
@@ -1236,11 +1236,11 @@ void AccountValue::FinalizeYear()
     TxSetDeathBft();
     TxSetTermAmt();
     // post values to LedgerVariant
-    InvariantValues().TermSpecAmt   [Year] = TermSpecAmt;
-    VariantValues().TermPurchased   [Year] = TermDB;
+    InvariantValues().TermSpecAmt   [Year] = dblize(TermSpecAmt);
+    VariantValues().TermPurchased   [Year] = dblize(TermDB);
     // Add term rider DB
-    VariantValues().BaseDeathBft    [Year] = DBReflectingCorr;
-    VariantValues().EOYDeathBft     [Year] = DBReflectingCorr + TermDB;
+    VariantValues().BaseDeathBft    [Year] = dblize(DBReflectingCorr);
+    VariantValues().EOYDeathBft     [Year] = dblize(DBReflectingCorr + TermDB);
 
 /*
     // AV already includes any experience refund credited, but it's
@@ -1265,20 +1265,20 @@ void AccountValue::FinalizeYear()
 
     // Monthly deduction detail
 
-    VariantValues().COICharge         [Year] = YearsTotalCoiCharge        ;
-    VariantValues().RiderCharges      [Year] = YearsTotalRiderCharges     ;
-    VariantValues().AVRelOnDeath      [Year] = YearsAVRelOnDeath          ;
-    VariantValues().ClaimsPaid        [Year] = YearsGrossClaims           ;
-    VariantValues().DeathProceedsPaid [Year] = YearsDeathProceeds         ;
-    VariantValues().NetClaims         [Year] = YearsNetClaims             ;
-    VariantValues().NetIntCredited    [Year] = YearsTotalNetIntCredited   ;
-    VariantValues().GrossIntCredited  [Year] = YearsTotalGrossIntCredited ;
-    VariantValues().LoanIntAccrued    [Year] = YearsTotalLoanIntAccrued   ;
-    VariantValues().NetCOICharge      [Year] = YearsTotalNetCoiCharge     ;
-    VariantValues().PolicyFee         [Year] = YearsTotalPolicyFee        ;
-    VariantValues().DacTaxLoad        [Year] = YearsTotalDacTaxLoad       ;
-    VariantValues().SpecAmtLoad       [Year] = YearsTotalSpecAmtLoad      ;
-    VariantValues().PremTaxLoad       [Year] = PremiumTax_->ytd_load();
+    VariantValues().COICharge         [Year] = dblize(YearsTotalCoiCharge)    ;
+    VariantValues().RiderCharges      [Year] = dblize(YearsTotalRiderCharges) ;
+    VariantValues().AVRelOnDeath      [Year] = YearsAVRelOnDeath              ;
+    VariantValues().ClaimsPaid        [Year] = YearsGrossClaims               ;
+    VariantValues().DeathProceedsPaid [Year] = YearsDeathProceeds             ;
+    VariantValues().NetClaims         [Year] = YearsNetClaims                 ;
+    VariantValues().NetIntCredited    [Year] = 
dblize(YearsTotalNetIntCredited);
+    VariantValues().GrossIntCredited  [Year] = 
dblize(YearsTotalGrossIntCredited);
+    VariantValues().LoanIntAccrued    [Year] = 
dblize(YearsTotalLoanIntAccrued);
+    VariantValues().NetCOICharge      [Year] = YearsTotalNetCoiCharge         ;
+    VariantValues().PolicyFee         [Year] = dblize(YearsTotalPolicyFee)    ;
+    VariantValues().DacTaxLoad        [Year] = YearsTotalDacTaxLoad           ;
+    VariantValues().SpecAmtLoad       [Year] = dblize(YearsTotalSpecAmtLoad)  ;
+    VariantValues().PremTaxLoad       [Year] = PremiumTax_->ytd_load()        ;
 
     double notional_sep_acct_charge =
           YearsTotalSepAcctLoad
@@ -1319,11 +1319,11 @@ void AccountValue::FinalizeYear()
             );
         }
 
-    VariantValues().NetPmt[Year] = std::accumulate
+    VariantValues().NetPmt[Year] = dblize(std::accumulate
         (NetPmts.begin()
         ,NetPmts.end()
         ,-YearsTotalGptForceout
-        );
+        ));
 
     if(mce_run_gen_curr_sep_full == RunBasis_)
         {
@@ -1335,8 +1335,8 @@ void AccountValue::FinalizeYear()
         // Forceouts should be a distinct component, passed separately
         // to ledger values. Probably we should treat 1035 exchanges
         // and NAAR 'forceouts' the same way.
-        InvariantValues().GrossPmt  [Year]  -= YearsTotalGptForceout;
-        InvariantValues().EeGrossPmt[Year]  -= YearsTotalGptForceout;
+        InvariantValues().GrossPmt  [Year]  -= dblize(YearsTotalGptForceout);
+        InvariantValues().EeGrossPmt[Year]  -= dblize(YearsTotalGptForceout);
 
         for(int j = 0; j < 12; ++j)
             {
@@ -1362,7 +1362,7 @@ void AccountValue::FinalizeYear()
             -   InvariantValues().NewCashLoan[Year]
             ;
 
-        InvariantValues().GptForceout[Year] = YearsTotalGptForceout;
+        InvariantValues().GptForceout[Year] = dblize(YearsTotalGptForceout);
 
 // SOMEDAY !! Not yet implemented.
 //        InvariantValues().NaarForceout[Year] = 
InvariantValues().ErGrossPmt[Year];
diff --git a/ihs_avmly.cpp b/ihs_avmly.cpp
index f463589..732d1b4 100644
--- a/ihs_avmly.cpp
+++ b/ihs_avmly.cpp
@@ -120,14 +120,14 @@ void AccountValue::DoMonthDR()
     // TAXATION !! Is it really useful to comment the arguments here?
     Irc7702A_->UpdateBft7702A
         (Dcv
-        ,DBReflectingCorr + TermDB // DB7702A
-        ,OldDB // prior_db_7702A
+        ,dblize(DBReflectingCorr + TermDB) // DB7702A
+        ,dblize(OldDB) // prior_db_7702A
         ,DBReflectingCorr == DBIgnoringCorr
         // TAXATION !! This assumes the term rider can be treated as death 
benefit;
         // use 'TermIsDbFor7702A'.
-        ,ActualSpecAmt + TermSpecAmt
-        ,OldSA // prior_sa_7702A
-        ,CashValueFor7702()
+        ,dblize(ActualSpecAmt + TermSpecAmt)
+        ,dblize(OldSA) // prior_sa_7702A
+        ,dblize(CashValueFor7702())
         );
 
     NetPmts  [Month] = C0; // TODO ?? expunge as being unnecessary
@@ -153,17 +153,17 @@ void AccountValue::DoMonthDR()
 // TODO ?? TAXATION !! Use CashValueFor7702() instead?
     double max_necessary_premium = Irc7702A_->MaxNecessaryPremium
         (Dcv
-        ,AnnualTargetPrem
+        ,dblize(AnnualTargetPrem)
         ,YearsTotLoadTgtLowestPremtax
         ,YearsTotLoadExcLowestPremtax
-        ,kludge_account_value
+        ,dblize(kludge_account_value)
         );
     double max_non_mec_premium = Irc7702A_->MaxNonMecPremium
         (Dcv
-        ,AnnualTargetPrem
+        ,dblize(AnnualTargetPrem)
         ,YearsTotLoadTgtLowestPremtax
         ,YearsTotLoadExcLowestPremtax
-        ,kludge_account_value
+        ,dblize(kludge_account_value)
         );
 
     // Saved for monthly detail report only. TAXATION !! Then are
@@ -187,12 +187,12 @@ void AccountValue::DoMonthDR()
         {
         Irc7702A_->UpdatePmt7702A
             (Dcv
-            ,-NetWD // TAXATION !! This should be gross, not net.
+            ,dblize(-NetWD) // TAXATION !! This should be gross, not net.
             ,false
-            ,AnnualTargetPrem
+            ,dblize(AnnualTargetPrem)
             ,YearsTotLoadTgtLowestPremtax
             ,YearsTotLoadExcLowestPremtax
-            ,kludge_account_value
+            ,dblize(kludge_account_value)
             );
         }
 
@@ -228,7 +228,7 @@ void AccountValue::DoMonthDR()
         (Dcv // Potentially modified.
         ,unnecessary_premium
         ,necessary_premium
-        ,CashValueFor7702()
+        ,dblize(CashValueFor7702())
         );
     LMI_ASSERT(0.0 <= Dcv);
 
@@ -579,10 +579,10 @@ void AccountValue::TxExch1035()
     LMI_ASSERT(0.0 == Dcv);
     Irc7702A_->Update1035Exch7702A
         (Dcv
-        ,NetPmts[Month]
+        ,dblize(NetPmts[Month])
         // TAXATION !! This assumes the term rider can be treated as death 
benefit;
         // use 'TermIsDbFor7702A'.
-        ,ActualSpecAmt + TermSpecAmt
+        ,dblize(ActualSpecAmt + TermSpecAmt)
 //        ,DBReflectingCorr + TermDB // TAXATION !! Alternate if 7702A benefit 
is DB?
         );
 
@@ -769,12 +769,12 @@ void AccountValue::ChangeSpecAmtBy(currency delta)
 // TODO ?? Shouldn't this be moved to FinalizeMonth()? The problem is
 // that the ledger object is used for working storage, where it should
 // probably be write-only instead.
-        InvariantValues().SpecAmt[j] = ActualSpecAmt;
+        InvariantValues().SpecAmt[j] = dblize(ActualSpecAmt);
         // Adjust term here only if it's formally a rider.
         // Otherwise, its amount should not have been changed.
         if(!TermIsNotRider)
             {
-            InvariantValues().TermSpecAmt[j] = TermSpecAmt;
+            InvariantValues().TermSpecAmt[j] = dblize(TermSpecAmt);
             }
 // Term specamt is a vector in class LedgerInvariant, but a scalar in
 // the input classes, e.g.:
@@ -800,7 +800,7 @@ void AccountValue::ChangeSupplAmtBy(currency delta)
     // At least for now, there is no effect on surrender charges.
     for(int j = Year; j < BasicValues::GetLength(); ++j)
         {
-        InvariantValues().TermSpecAmt[j] = TermSpecAmt;
+        InvariantValues().TermSpecAmt[j] = dblize(TermSpecAmt);
         }
     // Reset term DB whenever term SA changes. It's not obviously
     // necessary to do this here, but neither should it do any harm.
@@ -1104,15 +1104,15 @@ void AccountValue::TxTestGPT()
         // Or maybe not, because we can't match it if there was a plan change.
         Irc7702_->ProcessAdjustableEvent
             (Year
-            ,DBReflectingCorr + TermDB
-            ,OldDB
+            ,dblize(DBReflectingCorr + TermDB)
+            ,dblize(OldDB)
             // TAXATION !! This assumes the term rider can be treated as death 
benefit;
             // use 'TermIsDbFor7702'.
-            ,ActualSpecAmt + TermSpecAmt
-            ,OldSA
+            ,dblize(ActualSpecAmt + TermSpecAmt)
+            ,dblize(OldSA)
             ,new_dbopt
             ,old_dbopt
-            ,AnnualTargetPrem
+            ,dblize(AnnualTargetPrem)
             );
         }
 
@@ -1324,12 +1324,12 @@ void AccountValue::TxRecognizePaymentFor7702A
     double amount_paid_7702A = a_pmt;
     Irc7702A_->UpdatePmt7702A
         (Dcv
-        ,amount_paid_7702A
+        ,dblize(amount_paid_7702A)
         ,a_this_payment_is_unnecessary
-        ,AnnualTargetPrem
+        ,dblize(AnnualTargetPrem)
         ,YearsTotLoadTgtLowestPremtax
         ,YearsTotLoadExcLowestPremtax
-        ,kludge_account_value
+        ,dblize(kludge_account_value)
         );
 }
 
@@ -1505,7 +1505,7 @@ void AccountValue::TxLoanRepay()
 // This seems wrong. If we're changing something that's invariant among
 // bases, why do we change it for each basis?
 // TODO ?? Shouldn't this be moved to FinalizeMonth()?
-    InvariantValues().NewCashLoan[Year] = ActualLoan;
+    InvariantValues().NewCashLoan[Year] = dblize(ActualLoan);
     // TODO ?? Consider changing loan_ullage_[Year] here.
 }
 
@@ -1724,7 +1724,7 @@ void AccountValue::EndTermRider(bool convert)
     // Carry the new term spec amt forward into all future years.
     for(int j = Year; j < BasicValues::GetLength(); ++j)
         {
-        InvariantValues().TermSpecAmt[j] = TermSpecAmt;
+        InvariantValues().TermSpecAmt[j] = dblize(TermSpecAmt);
         }
 }
 
@@ -2590,7 +2590,7 @@ void AccountValue::TxTakeWD()
 // This seems wrong. If we're changing something that's invariant among
 // bases, why do we change it for each basis?
 // TODO ?? Shouldn't this be moved to FinalizeMonth()?
-    InvariantValues().NetWD[Year] = NetWD;
+    InvariantValues().NetWD[Year] = dblize(NetWD);
 }
 
 //============================================================================
@@ -2694,7 +2694,7 @@ void AccountValue::TxTakeLoan()
         ActualLoan = std::min(max_loan_increment, RequestedLoan);
         ActualLoan = std::max(ActualLoan, C0);
         // TODO ?? Shouldn't this happen in FinalizeMonth()?
-        InvariantValues().NewCashLoan[Year] = ActualLoan;
+        InvariantValues().NewCashLoan[Year] = dblize(ActualLoan);
         }
 
     {
@@ -2869,9 +2869,9 @@ void AccountValue::FinalizeMonth()
         {
         if(0 == Year && 0 == Month)
             {
-            InvariantValues().External1035Amount = External1035Amount;
-            InvariantValues().Internal1035Amount = Internal1035Amount;
-            InvariantValues().Dumpin = Dumpin;
+            InvariantValues().External1035Amount = dblize(External1035Amount);
+            InvariantValues().Internal1035Amount = dblize(Internal1035Amount);
+            InvariantValues().Dumpin = dblize(Dumpin);
             }
 
         // TAXATION !! We could also capture MEC status on other bases here.
diff --git a/ihs_basicval.cpp b/ihs_basicval.cpp
index 436c3fc..89fef82 100644
--- a/ihs_basicval.cpp
+++ b/ihs_basicval.cpp
@@ -1016,8 +1016,8 @@ currency BasicValues::GetModalPremGLP
     // for GPT reimplementation.
     double z = Irc7702_->CalculateGLP
         (a_duration
-        ,a_bft_amt
-        ,a_specamt
+        ,dblize(a_bft_amt)
+        ,dblize(a_specamt)
         ,Irc7702_->GetLeastBftAmtEver()
         ,effective_dbopt_7702(DeathBfts_->dbopt()[0], Effective7702DboRop)
         );
@@ -1040,8 +1040,8 @@ currency BasicValues::GetModalPremGSP
 {
     double z = Irc7702_->CalculateGSP
         (a_duration
-        ,a_bft_amt
-        ,a_specamt
+        ,dblize(a_bft_amt)
+        ,dblize(a_specamt)
         ,Irc7702_->GetLeastBftAmtEver()
         );
 



reply via email to

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