taxcalc 5.0.4__py3-none-any.whl → 5.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
taxcalc/__init__.py CHANGED
@@ -14,6 +14,6 @@ from taxcalc.taxcalcio import *
14
14
  from taxcalc.utils import *
15
15
  from taxcalc.cli import *
16
16
 
17
- __version__ = '5.0.4'
17
+ __version__ = '5.1.0'
18
18
  __min_python3_version__ = 10
19
19
  __max_python3_version__ = 12
taxcalc/calcfunctions.py CHANGED
@@ -842,26 +842,39 @@ def AGI(ymod1, c02500, c02900, XTOT, MARS, sep, DSI, exact, nu18, taxable_ubi,
842
842
 
843
843
 
844
844
  @iterate_jit(nopython=True)
845
- def AutoLoanInterestDed(auto_loan_interest, MARS, c00100, exact,
846
- AutoLoanInterestDed_c,
847
- AutoLoanInterestDed_ps,
848
- AutoLoanInterestDed_po_step_size,
849
- AutoLoanInterestDed_po_rate_per_step,
850
- auto_loan_interest_deduction):
851
- """
852
- Calculates below-the-line deduction on qualified auto loan interest paid.
845
+ def MiscDed(age_head, age_spouse, MARS, c00100, exact,
846
+ SeniorDed_c, SeniorDed_ps, SeniorDed_prt,
847
+ auto_loan_interest,
848
+ AutoLoanInterestDed_c,
849
+ AutoLoanInterestDed_ps,
850
+ AutoLoanInterestDed_po_step_size,
851
+ AutoLoanInterestDed_po_rate_per_step,
852
+ senior_deduction, auto_loan_interest_deduction):
853
+ """
854
+ Calculates below-the-line deduction for elderly head/spouse and
855
+ deduction on qualified auto loan interest paid.
853
856
 
854
857
  Parameters
855
858
  ----------
856
- auto_loan_interest: float
857
- Qualified auto loan interest paid
859
+ age_head: int
860
+ Age of tax unit head
861
+ age_head: int
862
+ Age of tax unit spouse
858
863
  MARS: int
859
864
  Filing marital status (1=single, 2=joint, 3=separate,
860
865
  4=household-head, 5=widow(er))
861
866
  c00100: float
862
867
  Adjusted gross income
863
868
  exact: int
864
- Whether or not to smooth the deduction phase out
869
+ Whether or not to smooth deduction phase out
870
+ SeniorDed_c: float
871
+ Maximum amount of senior deduction per head/spouse aged 65+
872
+ SeniorDed_ps: list[float]
873
+ Senior deduction AGI phase-out start level
874
+ SeniorDed_prt: float
875
+ Senior deduction phase-out rate
876
+ auto_loan_interest: float
877
+ Qualified auto loan interest paid
865
878
  AutoLoanInterestDed_c: float
866
879
  Deduction cap
867
880
  AutoLoanInterestDed_ps: float
@@ -875,9 +888,28 @@ def AutoLoanInterestDed(auto_loan_interest, MARS, c00100, exact,
875
888
 
876
889
  Returns
877
890
  -------
891
+ senior_deduction: float
892
+ Deduction available to both itemizers and nonitemizers
878
893
  auto_loan_interest_deduction: float
879
894
  Deduction available to both itemizers and nonitemizers
880
895
  """
896
+ # calculate senior deduction
897
+ senior_deduction = 0.
898
+ if SeniorDed_c > 0.:
899
+ seniors = 0
900
+ if age_head >= 65:
901
+ seniors += 1
902
+ if MARS == 2 and age_spouse >= 65:
903
+ seniors += 1
904
+ if seniors > 0:
905
+ ded = seniors * SeniorDed_c
906
+ po_start = SeniorDed_ps[MARS - 1]
907
+ if c00100 > po_start:
908
+ excess_agi = c00100 - po_start
909
+ po_amount = excess_agi * SeniorDed_prt
910
+ ded = max(0., ded - po_amount)
911
+ senior_deduction = ded
912
+ # calculate auto loan interest deduction
881
913
  auto_loan_interest_deduction = 0.
882
914
  if AutoLoanInterestDed_c > 0. and auto_loan_interest > 0.:
883
915
  # cap deduction
@@ -895,23 +927,24 @@ def AutoLoanInterestDed(auto_loan_interest, MARS, c00100, exact,
895
927
  po_amount = excess_agi * po_rate
896
928
  ded = max(0., ded - po_amount)
897
929
  auto_loan_interest_deduction = ded
898
- return auto_loan_interest_deduction
930
+ return (senior_deduction, auto_loan_interest_deduction)
899
931
 
900
932
 
901
933
  @iterate_jit(nopython=True)
902
934
  def ItemDed(e17500, e18400, e18500, e19200,
903
935
  e19800, e20100, e20400, g20500,
904
- MARS, age_head, age_spouse, c00100, c04470, c21040, c21060,
905
- c17000, c18300, c19200, c19700, c20500, c20800,
936
+ MARS, age_head, age_spouse, c00100, c04600, c04470, c21040, c21060,
937
+ c17000, c18300, c19200, c19700, c20500, c20800, II_brk6,
906
938
  ID_ps, ID_Medical_frt, ID_Medical_frt_add4aged, ID_Medical_hc,
907
939
  ID_Casualty_frt, ID_Casualty_hc, ID_Miscellaneous_frt,
908
- ID_Miscellaneous_hc, ID_Charity_crt_cash, ID_Charity_crt_noncash,
940
+ ID_Miscellaneous_hc, ID_Charity_crt_all, ID_Charity_crt_noncash,
909
941
  ID_prt, ID_crt, ID_c, ID_StateLocalTax_hc, ID_Charity_frt,
910
942
  ID_Charity_hc, ID_InterestPaid_hc, ID_RealEstate_hc,
911
943
  ID_Medical_c, ID_StateLocalTax_c, ID_RealEstate_c,
912
944
  ID_InterestPaid_c, ID_Charity_c, ID_Casualty_c,
913
945
  ID_Miscellaneous_c, ID_AllTaxes_c, ID_AllTaxes_hc,
914
- ID_StateLocalTax_crt, ID_RealEstate_crt, ID_Charity_f):
946
+ ID_StateLocalTax_crt, ID_RealEstate_crt, ID_Charity_f,
947
+ ID_reduction_salt_rate, ID_reduction_other_rate):
915
948
  """
916
949
  Calculates itemized deductions, Form 1040, Schedule A.
917
950
 
@@ -942,12 +975,14 @@ def ItemDed(e17500, e18400, e18500, e19200,
942
975
  Age in years of spouse
943
976
  c00100: float
944
977
  Adjusted gross income (AGI)
978
+ c04600: float
979
+ Personal exemptions after phase out
945
980
  c04470: float
946
- Itemized deductions after phase out (0 for non itemizers)
981
+ Itemized deductions after all limitations (0 for non-itemizers)
947
982
  c21040: float
948
- Itemized deductions that are phased out
983
+ Itemized deductions that are limited under the Pease limitations
949
984
  c21060: float
950
- Itemized deductions before phase out (0 for non itemizers)
985
+ Itemized deductions before limitation (0 for non-itemizers)
951
986
  c17000: float
952
987
  Schedule A: medical expenses deducted
953
988
  c18300: float
@@ -960,6 +995,8 @@ def ItemDed(e17500, e18400, e18500, e19200,
960
995
  Schedule A: net casualty or theft loss deducted
961
996
  c20800: float
962
997
  Schedule A: net limited miscellaneous deductions deducted
998
+ II_brk6: list
999
+ Bottom of top income tax rate bracket
963
1000
  ID_ps: list
964
1001
  Itemized deduction phaseout AGI start (Pease)
965
1002
  ID_Medical_frt: float
@@ -978,8 +1015,8 @@ def ItemDed(e17500, e18400, e18500, e19200,
978
1015
  miscellaneous expenses
979
1016
  ID_Miscellaneous_hc: float
980
1017
  Miscellaneous expense deduction haircut
981
- ID_Charity_crt_cash: float
982
- Ceiling (as decimal fraction of AGI) for cash charitable
1018
+ ID_Charity_crt_all: float
1019
+ Ceiling (as decimal fraction of AGI) for all charitable
983
1020
  contribution deductions
984
1021
  ID_Charity_crt_noncash: float
985
1022
  Ceiling (as decimal fraction of AGI) for noncash charitable
@@ -1032,6 +1069,10 @@ def ItemDed(e17500, e18400, e18500, e19200,
1032
1069
  state, local, and foreign real estate tax deductions
1033
1070
  ID_Charity_f: list
1034
1071
  Floor on the amount of charity expense deduction allowed (dollars)
1072
+ ID_reduction_salt_rate: float
1073
+ OBBBA reduction rate for SALT deductions
1074
+ ID_reduction_other_rate: float
1075
+ OBBBA reduction rate for other deductions
1035
1076
 
1036
1077
  Returns
1037
1078
  -------
@@ -1048,12 +1089,13 @@ def ItemDed(e17500, e18400, e18500, e19200,
1048
1089
  c20800: float
1049
1090
  Schedule A: net limited miscellaneous deductions deducted
1050
1091
  c21040: float
1051
- Itemized deductions that are phased out
1092
+ Itemized deductions that are phased out under Pease limitation
1052
1093
  c21060: float
1053
- Itemized deductions before phase out (0 for non itemizers)
1094
+ Itemized deductions before any limitation (0 for non-itemizers)
1054
1095
  c04470: float
1055
- Itemized deductions after phase out (0 for non itemizers)
1096
+ Itemized deductions after all limitations (0 for non-itemizers)
1056
1097
  """
1098
+ # pylint: disable=too-many-statements
1057
1099
  posagi = max(c00100, 0.)
1058
1100
  # Medical
1059
1101
  medical_frt = ID_Medical_frt
@@ -1078,12 +1120,13 @@ def ItemDed(e17500, e18400, e18500, e19200,
1078
1120
  c19200 = e19200 * (1. - ID_InterestPaid_hc)
1079
1121
  c19200 = min(c19200, ID_InterestPaid_c[MARS - 1])
1080
1122
  # Charity
1081
- charity_ded_cash = min(ID_Charity_crt_cash * posagi, e19800)
1082
- charity_ded_noncash = min(ID_Charity_crt_noncash * posagi, e20100)
1083
- c19700 = charity_ded_cash + charity_ded_noncash
1084
- # charity floor is zero in present law
1085
- charity_floor = max(ID_Charity_frt * posagi, ID_Charity_f[MARS - 1])
1086
- c19700 = max(0., c19700 - charity_floor) * (1. - ID_Charity_hc)
1123
+ floor = max(ID_Charity_frt * posagi, ID_Charity_f[MARS - 1])
1124
+ noncash_ded = max(0., e20100 - floor)
1125
+ charity_ded_noncash = min(ID_Charity_crt_noncash * posagi, noncash_ded)
1126
+ remaining_floor = max(0., floor - e20100)
1127
+ charity_ded_cash = max(0., e19800 - remaining_floor)
1128
+ c19700 = charity_ded_noncash + charity_ded_cash
1129
+ c19700 = min(c19700, ID_Charity_crt_all * posagi) * (1. - ID_Charity_hc)
1087
1130
  c19700 = min(c19700, ID_Charity_c[MARS - 1])
1088
1131
  # Casualty
1089
1132
  c20500 = (max(0., g20500 - ID_Casualty_frt * posagi) *
@@ -1096,8 +1139,8 @@ def ItemDed(e17500, e18400, e18500, e19200,
1096
1139
  c20800 = min(c20800, ID_Miscellaneous_c[MARS - 1])
1097
1140
  # Gross total itemized deductions
1098
1141
  c21060 = c17000 + c18300 + c19200 + c19700 + c20500 + c20800
1099
- # Limitations on total itemized deductions
1100
- # (no attempt to adjust c04470 components for limitations)
1142
+ # Pease limitation on total itemized deductions
1143
+ # (no attempt to adjust c04470 components for limitation)
1101
1144
  nonlimited = c17000 + c20500
1102
1145
  limitstart = ID_ps[MARS - 1]
1103
1146
  if c21060 > nonlimited and c00100 > limitstart:
@@ -1108,8 +1151,24 @@ def ItemDed(e17500, e18400, e18500, e19200,
1108
1151
  else:
1109
1152
  c21040 = 0.
1110
1153
  c04470 = c21060
1154
+ # OBBBA limitation on total itemized deductions
1155
+ # (no attempt to adjust c04470 components for limitation)
1156
+ reduction = 0.
1157
+ if ID_reduction_salt_rate > 0. or ID_reduction_other_rate > 0.:
1158
+ assert c21040 <= 0.0, "Pease and OBBBA cannot both be in effect"
1159
+ tincome = max(0., c00100 - c04600)
1160
+ texcess = max(0., tincome - II_brk6[MARS - 1])
1161
+ smaller_salt = min(c18300, texcess)
1162
+ salt_reduction = ID_reduction_salt_rate * smaller_salt
1163
+ other_deds = max(0, c04470 - c18300)
1164
+ smaller_other = min(other_deds, texcess)
1165
+ other_reduction = ID_reduction_other_rate * smaller_other
1166
+ reduction = salt_reduction + other_reduction
1167
+ c04470 = max(0., c04470 - reduction)
1168
+ # Cap total itemized deductions
1169
+ # (no attempt to adjust c04470 components for limitation)
1111
1170
  c04470 = min(c04470, ID_c[MARS - 1])
1112
- # Return total itemized deduction amounts and components
1171
+ # Return total itemized deduction amounts and pre-limitation components
1113
1172
  return (c17000, c18300, c19200, c19700, c20500, c20800,
1114
1173
  c21040, c21060, c04470)
1115
1174
 
@@ -1165,7 +1224,7 @@ def AdditionalMedicareTax(e00200, MARS,
1165
1224
  @iterate_jit(nopython=True)
1166
1225
  def StdDed(DSI, earned, STD, age_head, age_spouse, STD_Aged, STD_Dep,
1167
1226
  MARS, MIDR, blind_head, blind_spouse, standard,
1168
- STD_allow_charity_ded_nonitemizers, e19800, ID_Charity_crt_cash,
1227
+ STD_allow_charity_ded_nonitemizers, e19800, ID_Charity_crt_all,
1169
1228
  c00100, STD_charity_ded_nonitemizers_max):
1170
1229
  """
1171
1230
  Calculates standard deduction, including standard deduction for
@@ -1203,8 +1262,8 @@ def StdDed(DSI, earned, STD, age_head, age_spouse, STD_Aged, STD_Dep,
1203
1262
  deduction
1204
1263
  e19800: float
1205
1264
  Schedule A: cash charitable contributions
1206
- ID_Charity_crt_cash: float
1207
- Fraction of AGI cap on cash charitable deductions
1265
+ ID_Charity_crt_all: float
1266
+ Fraction of AGI cap on all charitable deductions
1208
1267
  c00100: float
1209
1268
  Federal AGI
1210
1269
  STD_charity_ded_nonitemizers_max: float
@@ -1238,19 +1297,21 @@ def StdDed(DSI, earned, STD, age_head, age_spouse, STD_Aged, STD_Dep,
1238
1297
  standard = 0.
1239
1298
  # calculate CARES cash charity deduction for nonitemizers
1240
1299
  if STD_allow_charity_ded_nonitemizers:
1241
- capped_ded = min(e19800, ID_Charity_crt_cash * c00100)
1300
+ capped_ded = min(e19800, ID_Charity_crt_all * c00100)
1242
1301
  standard += min(capped_ded, STD_charity_ded_nonitemizers_max[MARS - 1])
1243
1302
  return standard
1244
1303
 
1245
1304
 
1246
1305
  @iterate_jit(nopython=True)
1247
1306
  def TaxInc(c00100, standard, c04470, c04600, MARS, e00900, c03260, e26270,
1248
- e02100, e27200, e00650, c01000, auto_loan_interest_deduction,
1307
+ e02100, e27200, e00650, c01000,
1308
+ senior_deduction, auto_loan_interest_deduction,
1249
1309
  PT_SSTB_income, PT_binc_w2_wages, PT_ubia_property,
1250
1310
  PT_qbid_rt, PT_qbid_limited,
1251
1311
  PT_qbid_taxinc_thd, PT_qbid_taxinc_gap, PT_qbid_w2_wages_rt,
1252
- PT_qbid_alt_w2_wages_rt, PT_qbid_alt_property_rt, c04800,
1253
- PT_qbid_ps, PT_qbid_prt, qbided):
1312
+ PT_qbid_alt_w2_wages_rt, PT_qbid_alt_property_rt,
1313
+ PT_qbid_ps, PT_qbid_prt, PT_qbid_min_ded, PT_qbid_min_qbi,
1314
+ c04800, qbided):
1254
1315
  """
1255
1316
  Calculates taxable income, c04800, and
1256
1317
  qualified business income deduction, qbided.
@@ -1282,6 +1343,8 @@ def TaxInc(c00100, standard, c04470, c04600, MARS, e00900, c03260, e26270,
1282
1343
  Qualified dividends included in ordinary dividends
1283
1344
  c01000: float
1284
1345
  Limitation on capital losses
1346
+ senior_deduction: float
1347
+ Deduction for elderly head/spouse
1285
1348
  auto_loan_interest_deduction: float
1286
1349
  Deduction for qualified auto loan interest paid
1287
1350
  PT_SSTB_income: int
@@ -1309,12 +1372,16 @@ def TaxInc(c00100, standard, c04470, c04600, MARS, e00900, c03260, e26270,
1309
1372
  Alternative QBID cap rate on pass-through business W-2 wages paid
1310
1373
  PT_qbid_alt_property_rt: float
1311
1374
  Alternative QBID cap rate on pass-through business property owned
1312
- c04800: float
1313
- Regular taxable income
1314
1375
  PT_qbid_ps: list
1315
1376
  QBID phaseout taxable income start
1316
1377
  PT_qbid_prt: float
1317
1378
  QBID phaseout rate
1379
+ PT_qbid_min_ded: float
1380
+ Minimum QBID amount
1381
+ PT_qbid_min_qbi: float
1382
+ Minimum QBI necessary to get QBID no less than PT_qbid_min_ded
1383
+ c04800: float
1384
+ Regular taxable income
1318
1385
  qbided: float
1319
1386
  Qualified Business Income (QBI) deduction
1320
1387
 
@@ -1325,8 +1392,10 @@ def TaxInc(c00100, standard, c04470, c04600, MARS, e00900, c03260, e26270,
1325
1392
  qbided: float
1326
1393
  Qualified Business Income (QBI) deduction
1327
1394
  """
1328
- # calculate taxable income before qualified business income deduction
1329
- pre_qbid_taxinc = max(0., c00100 - max(c04470, standard) - c04600)
1395
+ # calculate taxable income before qualified business income deduction,
1396
+ # which is assumed to be stacked last in the list of deductions
1397
+ odeds = senior_deduction + auto_loan_interest_deduction
1398
+ pre_qbid_taxinc = max(0., c00100 - max(c04470, standard) - c04600 - odeds)
1330
1399
  # calculate qualified business income deduction
1331
1400
  qbinc = max(0., e00900 - c03260 + e26270 + e02100 + e27200)
1332
1401
  qbid_before_limits = qbinc * PT_qbid_rt
@@ -1371,9 +1440,12 @@ def TaxInc(c00100, standard, c04470, c04600, MARS, e00900, c03260, e26270,
1371
1440
  qbided = max(0., qbided - PT_qbid_prt * excess)
1372
1441
  else: # if PT_qbid_limited is false
1373
1442
  qbided = qbid_before_limits
1443
+ # apply minimum QBID logic
1444
+ if qbinc >= PT_qbid_min_qbi and qbided < PT_qbid_min_ded:
1445
+ qbided = PT_qbid_min_ded
1374
1446
 
1375
- # calculate taxable income after qualified business income deduction
1376
- c04800 = max(0., pre_qbid_taxinc - qbided - auto_loan_interest_deduction)
1447
+ # calculate taxable income after qbided
1448
+ c04800 = max(0., pre_qbid_taxinc - qbided)
1377
1449
  return (c04800, qbided)
1378
1450
 
1379
1451
 
@@ -1823,7 +1895,7 @@ def AMT(e07300, dwks13, standard, f6251, c00100, c18300, taxbc,
1823
1895
  taxbc: float
1824
1896
  Regular tax on regular taxable income before credits
1825
1897
  c04470: float
1826
- Itemized deductions after phase-out (zero for non itemizers)
1898
+ Itemized deductions after phase-out (zero for non-itemizers)
1827
1899
  c17000: float
1828
1900
  Schedule A: Medical expenses deducted
1829
1901
  c20800: float
taxcalc/calculator.py CHANGED
@@ -14,7 +14,7 @@ import paramtools
14
14
  from taxcalc.calcfunctions import (TaxInc, SchXYZTax, GainsTax, AGIsurtax,
15
15
  NetInvIncTax, AMT, EI_PayrollTax, Adj,
16
16
  DependentCare, ALD_InvInc_ec_base, CapGains,
17
- SSBenefits, UBI, AGI, AutoLoanInterestDed,
17
+ SSBenefits, UBI, AGI, MiscDed,
18
18
  ItemDed, StdDed, AdditionalMedicareTax,
19
19
  F2441, EITC, RefundablePayrollTaxCredit,
20
20
  ChildDepTaxCredit, AdditionalCTC, CTC_new,
@@ -1391,7 +1391,7 @@ class Calculator():
1391
1391
  CapGains(self.__policy, self.__records)
1392
1392
  SSBenefits(self.__policy, self.__records)
1393
1393
  AGI(self.__policy, self.__records)
1394
- AutoLoanInterestDed(self.__policy, self.__records)
1394
+ MiscDed(self.__policy, self.__records)
1395
1395
  ItemDed(self.__policy, self.__records)
1396
1396
  AdditionalMedicareTax(self.__policy, self.__records)
1397
1397
  StdDed(self.__policy, self.__records)
taxcalc/policy.py CHANGED
@@ -61,7 +61,7 @@ class Policy(Parameters):
61
61
  # following parameters were renamed in PR 2918
62
62
  'SS_thd50': 'was renamed SS_thd1 in Tax-Calculator 5.0.0',
63
63
  'SS_thd85': 'was renamed SS_thd2 in Tax-Calculator 5.0.0',
64
- # following parameters were removed in PR 2619
64
+ # following parameters were removed in PR 2919
65
65
  'PT_rt1': 'was removed in Tax-Calculator 5.0.0',
66
66
  'PT_rt2': 'was removed in Tax-Calculator 5.0.0',
67
67
  'PT_rt3': 'was removed in Tax-Calculator 5.0.0',
@@ -81,7 +81,7 @@ class Policy(Parameters):
81
81
  'PT_EligibleRate_passive': 'was removed in Tax-Calculator 5.0.0',
82
82
  'PT_wages_active_income': 'was removed in Tax-Calculator 5.0.0',
83
83
  'PT_top_stacking': 'was removed in Tax-Calculator 5.0.0',
84
- # following parameters were removed in PR 2620
84
+ # following parameters were removed in PR 2920
85
85
  'ID_AmountCap_Switch': 'was removed in Tax-Calculator 5.0.0',
86
86
  'ID_AmountCap_rt': 'was removed in Tax-Calculator 5.0.0',
87
87
  'ID_BenefitCap_Switch': 'was removed in Tax-Calculator 5.0.0',
@@ -90,13 +90,18 @@ class Policy(Parameters):
90
90
  'ID_BenefitSurtax_crt': 'was removed in Tax-Calculator 5.0.0',
91
91
  'ID_BenefitSurtax_trt': 'was removed in Tax-Calculator 5.0.0',
92
92
  'ID_BenefitSurtax_em': 'was removed in Tax-Calculator 5.0.0',
93
- # following parameters were renamed in PR 2628
93
+ # following parameters were renamed in PR 2928
94
94
  'CDCC_ps': 'was renamed CDCC_ps1 in Tax-Calculator 5.1.0',
95
95
  'CDCC_crt': 'was renamed CDCC_po1_rate_max in Tax-Calculator 5.1.0',
96
96
  'CDCC_frt': 'was renamed CDCC_po1_rate_min in Tax-Calculator 5.1.0',
97
97
  'CDCC_po_step_size': (
98
- 'was renamed CDCC_po1_step_size'
99
- 'in Tax-Calculator 5.1.0'
98
+ 'was renamed CDCC_po1_step_size in Tax-Calculator 5.1.0'
99
+ ),
100
+ # following parameter was renamed in PR 2929
101
+ 'II_prt': 'was renamed II_em_prt in Tax-Calculator 5.1.0',
102
+ # following parameter was renamed in PR 2932
103
+ 'ID_Charity_crt_cash': (
104
+ 'was renamed ID_Charity_crt_all in Tax-Calculator 5.1.0'
100
105
  ),
101
106
  }
102
107
  # (2) specify which Policy parameters have been redefined recently