lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5444] Improve documentation


From: Greg Chicares
Subject: [lmi-commits] [5444] Improve documentation
Date: Tue, 10 Apr 2012 17:12:15 +0000

Revision: 5444
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5444
Author:   chicares
Date:     2012-04-10 17:12:14 +0000 (Tue, 10 Apr 2012)
Log Message:
-----------
Improve documentation

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/cell.rnc
    lmi/trunk/cell.xsd

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2012-04-10 17:07:36 UTC (rev 5443)
+++ lmi/trunk/ChangeLog 2012-04-10 17:12:14 UTC (rev 5444)
@@ -29971,3 +29971,14 @@
 Regenerate enumerations, using the technique described 20120325T1232Z.
 This makes it easier to annotate them.
 
+20120410T1707Z <address@hidden> [573]
+
+  cell.rnc
+Alter layout in anticipation of adding annotations.
+
+20120410T1712Z <address@hidden> [573]
+
+  cell.rnc
+  cell.xsd
+Improve documentation.
+

Modified: lmi/trunk/cell.rnc
===================================================================
--- lmi/trunk/cell.rnc  2012-04-10 17:07:36 UTC (rev 5443)
+++ lmi/trunk/cell.rnc  2012-04-10 17:12:14 UTC (rev 5444)
@@ -27,404 +27,456 @@
 cell_element = element cell
     {attribute version {"6"}
 
-    ,##
+    ,## Accidental death benefit: elected or not.
      element AccidentalDeathBenefit           {yes_or_no}
-    ,##
+    ,## Insured's address: number and street.
      element Address                          {text}
-    ,##
+    ,## Agent's address: number and street.
      element AgentAddress                     {text}
-    ,##
+    ,## Agent's address: city.
      element AgentCity                        {text}
-    ,##
+    ,## Agent ID code.
      element AgentId                          {text}
-    ,##
+    ,## Agent's full name.
      element AgentName                        {text}
-    ,##
+    ,## Agent's phone number.
      element AgentPhone                       {text}
-    ,##
+    ,## Agent's address: state.
      element AgentState                       {state}
-    ,##
+    ,## Agent's address: zip code.
      element AgentZipCode                     {text}
-    ,##
+    ,## Amortize premium load (occasionally used for BOLI).
      element AmortizePremiumLoad              {yes_or_no}
-    ,##
+    ,## Special logic, if any, to avoid a MEC.
      element AvoidMecMethod                   {mec_avoid_method}
-    ,##
+    ,## Custom-blend rates by gender.
      element BlendGender                      {yes_or_no}
-    ,##
+    ,## Custom-blend rates by smoking.
      element BlendSmoking                     {yes_or_no}
-    ,##
+    ,## Negative surrender charge as proportion of total account value.
      element CashValueEnhancementRate         {numeric_sequence}
-    ,##
+    ,## Child(ren) term rider: elected or not.
      element ChildRider                       {yes_or_no}
-    ,##
+    ,## Child(ren) term rider: face amount.
      element ChildRiderAmount                 {nonnegative_double}
-    ,##
+    ,## Insured's address: city.
      element City                             {text}
-    ,##
+    ,## Free-form comments.
      element Comments                         {text}
-    ,##
+    ,## Corporation's address: number and street.
      element CorporationAddress               {text}
-    ,##
+    ,## Corporation's address: city.
      element CorporationCity                  {text}
-    ,##
+    ,## Corporation's name.
      element CorporationName                  {text}
-    ,##
+    ,## Corporation's planned premium.
      element CorporationPayment               {payment_sequence}
-    ,##
+    ,## Corporation's premium mode.
      element CorporationPaymentMode           {mode_sequence}
-    ,##
+    ,## Corporation's tabular-premium multiplier.
      element CorporationPremiumTableFactor    {nonnegative_double}
-    ,##
+    ,## Corporation's address: state.
      element CorporationState                 {state}
-    ,##
+    ,## Corporation's tax bracket.
      element CorporationTaxBracket            {numeric_sequence}
-    ,##
+    ,## Corporation's address: zip code.
      element CorporationZipCode               {text}
-    ,##
+    ,## Insured's address: country.
      element Country                          {country}
-    ,##
+    ,## COI multiplier for country.
      element CountryCoiMultiplier             {nonnegative_double}
-    ,##
+    ,## User-designed supplemental illustration: elected or not.
      element CreateSupplementalReport         {yes_or_no}
-    ,##
+    ,## Multiplier for current COI rates.
      element CurrentCoiMultiplier             {numeric_sequence}
-    ,##
+    ,## Insured's date of birth.
      element DateOfBirth                      {calendar_date_int}
-    ,##
+    ,## Death benefit option.
      element DeathBenefitOption               {dbo_sequence}
-    ,##
+    ,## [obsolete]
      element DeathBenefitOptionFromIssue      {dbopt}
-    ,##
+    ,## [obsolete]
      element DeathBenefitOptionFromRetirement {dbopt}
-    ,##
+    ,## 7702 definitional test.
      element DefinitionOfLifeInsurance        {defn_life_ins}
-    ,##
+    ,## 7702A definition of material change.
      element DefinitionOfMaterialChange       {defn_material_change}
-    ,##
+    ,## Dump-in: i.e., first-year-only extra premium other than a 1035 
exchange.
      element Dumpin                           {nonnegative_double}
-    ,##
+    ,## Effective date: for UL, date of first monthly deduction.
      element EffectiveDate                    {calendar_date_int}
-    ,##
+    ,## Use today's date as effective date: handy for new business.
      element EffectiveDateToday               {yes_or_no}
-    ,##
+    ,## Employee class, used for grouping individuals in order to make
+     ## input easier. E.g., specified amount for 'partners' might be
+     ## two times salary, while 'all others' get a flat $50K.
      element EmployeeClass                    {text}
-    ,##
+    ,## Factor for amortizing mortality profit into future charges.
      element ExperienceRatingInitialKFactor   {nonnegative_double}
-    ,##
+    ,## Overridden reserve rate for experience rating.
      element ExperienceReserveRate            {proportion_double}
-    ,##
+    ,## Amount of 1035 exchange from a different insurer.
      element External1035ExchangeAmount       {nonnegative_double}
-    ,##
+    ,## Tax basis of 1035 exchange from a different insurer.
      element External1035ExchangeBasis        {nonnegative_double}
-    ,##
+    ,## MEC status of 1035 exchange from a different insurer.
      element External1035ExchangeFromMec      {yes_or_no}
-    ,##
+    ,## Extra charge on separate-account assets. The motivation is to
+     ## let end users add a negotiated asset trailer without changing
+     ## the product database, but the field may be used for any extra
+     ## charge in the nature of M&E.
      element ExtraCompensationOnAssets        {numeric_sequence}
-    ,##
+    ,## Extra premium load. The motivation is to let end users add a
+     ## negotiated commission without changing the product database,
+     ## but the field may be used for any extra load on premium.
      element ExtraCompensationOnPremium       {numeric_sequence}
-    ,##
+    ,## Extra policy fee. The motivation is to let end users add an
+     ## additional monthly custodial fee for a custom fund, but the
+     ## field may be used for any extra monthly fee.
      element ExtraMonthlyCustodialFee         {numeric_sequence}
-    ,##
+    ,## Annual flat extra per thousand of specified amount.
      element FlatExtra                        {numeric_sequence}
-    ,##
+    ,## Agency or brokerage code.
      element Franchise                        {text}
-    ,##
+    ,## As yet unused: cf. 'fund_input_method'.
      element FundAllocations                  {numeric_sequence}
-    ,##
+    ,## Fund-allocation override: cf. 'fund_input_method'.
      element FundChoiceType                   {fund_input_method}
-    ,##
+    ,## Insured's gender for insurance purposes.
      element Gender                           {gender}
-    ,##
+    ,## General-account interest rate as a decimal: e.g., '0.03' for 3%.
      element GeneralAccountRate               {numeric_sequence}
-    ,##
+    ,## General-account rate: before or after spread.
      element GeneralAccountRateType           {gen_acct_rate_type}
-    ,##
+    ,## Type of underwriting, e.g. guaranteed issue.
      element GroupUnderwritingType            {uw_basis}
-    ,##
+    ,## Honeymoon: elected or not. This is a temporary secondary
+     ## guarantee that enhances surrender values in early years, by
+     ## setting a minimum CSV equal to gross premium accumulated at a
+     ## special interest rate, with no monthly deductions taken.
      element HoneymoonEndorsement             {yes_or_no}
-    ,##
+    ,## Interest spread for honeymoon value, which grows at the net
+     ## general account rate less this decrement.
      element HoneymoonValueSpread             {numeric_sequence}
-    ,##
+    ,## Include this life in composite: default = 'Yes'. This field
+     ## permits excluding certain lives from a composite without
+     ## deleting them from a census.
      element IncludeInComposite               {yes_or_no}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentAmount          {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentMode            {mode}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentStrategy        {pmt_strategy}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentToAge           {age_int}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentToAlternative   {to_point}
-    ,##
+    ,## [obsolete]
      element IndividualPaymentToDuration      {duration_int}
-    ,##
+    ,## Date as of which inforce values are provided. This is taken to
+     ## refer to the first moment of the day, before monthiversary
+     ## processing. Some admin systems find it more convenient to
+     ## provide values as of the last moment of the preceding day; in
+     ## that case, this field should indicate the day following that
+     ## preceding day.
      element InforceAsOfDate                  {calendar_date_int}
-    ,##
+    ,## Inforce account value before last material change, for 7702A.
      element InforceAvBeforeLastMc            {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element InforceContractMonth             {month_int}
-    ,##
+    ,## [obsolete]
      element InforceContractYear              {duration_int}
-    ,##
+    ,## Inforce cumulative 7702 guideline level premium.
      element InforceCumulativeGlp             {nonnegative_double}
-    ,##
+    ,## Inforce cumulative no-lapse premium, for contracts that offer
+     ## a no-lapse guarantee as long as a cumulative minimum premium
+     ## is paid.
      element InforceCumulativeNoLapsePremium  {nonnegative_double}
-    ,##
+    ,## Inforce cumulative payments: sum of all gross premiums,
+     ## including dump-ins and 1035 exchange proceeds.
      element InforceCumulativePayments        {nonnegative_double}
-    ,##
+    ,## Inforce 7702A deemed cash value.
      element InforceDcv                       {nonnegative_double}
-    ,##
+    ,## Inforce account value in the general account.
      element InforceGeneralAccountValue       {nonnegative_double}
-    ,##
+    ,## Inforce 7702 guideline level premium.
      element InforceGlp                       {nonnegative_double}
-    ,##
+    ,## Inforce 7702 guideline single premium.
      element InforceGsp                       {nonnegative_double}
-    ,##
+    ,## Inforce honeymoon value. Zero if honeymoon has expired or
+     ## was never present.
      element InforceHoneymoonValue            {nonnegative_double}
-    ,##
+    ,## MEC status of inforce contract.
      element InforceIsMec                     {yes_or_no}
-    ,##
+    ,## Inforce 7702A least death benefit.
      element InforceLeastDeathBenefit         {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element InforceMonth                     {month_int}
-    ,##
+    ,## Inforce net reserve for experience rating.
      element InforceNetExperienceReserve      {xsd:double}
-    ,##
+    ,## Inforce balance (total indebtedness) for preferred loans.
      element InforcePreferredLoanBalance      {nonnegative_double}
-    ,##
+    ,## Inforce loaned account value (excluding accrued interest) for
+     ## preferred loans.
      element InforcePreferredLoanValue        {nonnegative_double}
-    ,##
+    ,## Inforce balance (total indebtedness) for regular loans.
      element InforceRegularLoanBalance        {nonnegative_double}
-    ,##
+    ,## Inforce loaned account value (excluding accrued interest) for
+     ## regular loans.
      element InforceRegularLoanValue          {nonnegative_double}
-    ,##
+    ,## Inforce account value in all separate accounts, combined.
      element InforceSeparateAccountValue      {nonnegative_double}
-    ,##
+    ,## Inforce 7702A seven-pay premium.
      element InforceSevenPayPremium           {nonnegative_double}
-    ,##
+    ,## Inforce tax basis.
      element InforceTaxBasis                  {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element InforceYear                      {duration_int}
-    ,##
+    ,## Inforce year-to-date "net" COI charge for experience rating.
      element InforceYtdNetCoiCharge           {nonnegative_double}
-    ,##
+    ,## Investment management fee of a custom fund.
      element InputFundManagementFee           {nonnegative_double}
-    ,##
+    ,## Insured's full name.
      element InsuredName                      {text}
-    ,##
+    ,## Insured's tabular-premium multiplier.
      element InsuredPremiumTableFactor        {nonnegative_double}
-    ,##
+    ,## Amount of 1035 exchange from the same insurer; distinguished
+     ## from external 1035 because an internal exchange may not be
+     ## subject to premium tax.
      element Internal1035ExchangeAmount       {nonnegative_double}
-    ,##
+    ,## Tax basis of 1035 exchange from the same insurer.
      element Internal1035ExchangeBasis        {nonnegative_double}
-    ,##
+    ,## MEC status of 1035 exchange from the same insurer.
      element Internal1035ExchangeFromMec      {yes_or_no}
-    ,##
+    ,## Insurance age on effective date.
      element IssueAge                         {age_int}
-    ,##
+    ,## Most recent group-underwriting date, for group contracts that
+     ## reenter a select and ultimate table of COI rates periodically
+     ## upon successful re-underwriting (for active lives only).
      element LastCoiReentryDate               {calendar_date_int}
-    ,##
+    ,## Date of most recent 7702A material change.
      element LastMaterialChangeDate           {calendar_date_int}
-    ,##
+    ,## [obsolete]
      element LoanAmount                       {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element LoanFromAge                      {age_int}
-    ,##
+    ,## [obsolete]
      element LoanFromAlternative              {from_point}
-    ,##
+    ,## [obsolete]
      element LoanFromDuration                 {duration_int}
-    ,##
+    ,## Loan interest rate, if it is variable.
      element LoanRate                         {proportion_double}
-    ,##
+    ,## Loan rate: fixed or variable.
      element LoanRateType                     {loan_rate_type}
-    ,##
+    ,## [obsolete]
      element LoanToAge                        {age_int}
-    ,##
+    ,## [obsolete]
      element LoanToAlternative                {to_point}
-    ,##
+    ,## [obsolete]
      element LoanToDuration                   {duration_int}
-    ,##
+    ,## Proportion of males when rates are custom-blended by gender.
      element MaleProportion                   {proportion_double}
-    ,##
+    ,## Maximum net amount at risk, as constrained by reinsurance.
+     ## Some contracts in the high-net-worth market force money out to
+     ## prevent corridor death benefit from exceeding available
+     ## reinsurance.
      element MaximumNaar                      {nonnegative_double}
-    ,##
+    ,## New loan taken in cash (excluding capitalized interest).
      element NewLoan                          {numeric_sequence}
-    ,##
+    ,## Proportion of nonsmokers when rates are custom-blended by smoking.
      element NonsmokerProportion              {proportion_double}
-    ,##
+    ,## Number of identical lives represented by a single census cell.
+     ## It is sometimes convenient to approximate a population by
+     ## specifying a few cells and indicating the number of lives each
+     ## one represents.
      element NumberOfIdenticalLives           {xsd:nonNegativeInteger}
-    ,##
+    ,## Override country COI multiplier.
      element OverrideCoiMultiplier            {yes_or_no}
-    ,##
+    ,## Override reserve rate for experience rating.
      element OverrideExperienceReserveRate    {yes_or_no}
-    ,##
+    ,## Override investment management fee: used only with custom funds.
      element OverrideFundManagementFee        {yes_or_no}
-    ,##
+    ,## Multiplier applied to partial-mortality table.
      element PartialMortalityMultiplier       {numeric_sequence}
-    ,##
+    ,## Insured's planned premium.
      element Payment                          {payment_sequence}
-    ,##
+    ,## Insured's premium mode.
      element PaymentMode                      {mode_sequence}
-    ,##
+    ,## Policy number: a unique identifier, which, despite its
+     ## commonly-used name, is often not purely numeric.
      element PolicyNumber                     {text}
-    ,##
+    ,## Interest decrement applied to crediting rate after the
+     ## honeymoon expires--designed to recover the cost of providing
+     ## the honeymoon.
      element PostHoneymoonSpread              {proportion_double}
-    ,##
+    ,## 7702A "amounts paid" for each "contract year" since beginning
+     ## of most recent seven-pay period; zero if not in a seven-pay
+     ## period.
      element PremiumHistory                   {numeric_sequence}
-    ,##
+    ,## State to which premium tax is paid.
      element PremiumTaxState                  {state}
-    # Enumerators for 'ProductName' depend on run-time context.
-    ,##
+    ,## Product (plan): enumerators depend on run-time context.
      element ProductName                      {text}
-    ,##
+    ,## Projected salary: used for salary-based benefits.
      element ProjectedSalary                  {numeric_sequence}
-    ,##
+    ,## Retirees allowed to enroll (or not). This is handy for
+     ## warning when retirees are unintentionally included in a
+     ## census.
      element RetireesCanEnroll                {yes_or_no}
-    ,##
+    ,## Insured's retirement age.
      element RetirementAge                    {age_int}
-    ,##
+    ,## Order in which different individuals in a census are
+     ## processed: cf. 'run_order'.
      element RunOrder                         {run_order}
-    ,##
+    ,## Maximum salary-based specified amount.
      element SalarySpecifiedAmountCap         {nonnegative_double}
-    ,##
+    ,## Salary multiple used to determine specified amount.
      element SalarySpecifiedAmountFactor      {nonnegative_double}
-    ,##
+    ,## Amount to be subtracted from salary-based specified amount,
+     ## intended to represent basic group term coverage.
      element SalarySpecifiedAmountOffset      {nonnegative_double}
-    ,##
+    ,## Separate-account hypothetical rate as a decimal: e.g., '0.06' for 6%.
      element SeparateAccountRate              {numeric_sequence}
-    ,##
+    ,## Separate-account rate: before or after spread.
      element SeparateAccountRateType          {sep_acct_rate_type}
-    ,##
+    ,## Insured's smoking or tobacco use.
      element Smoking                          {smoking}
-    ,##
+    ,## Expense and general-account basis for a solve: lmi permits
+     ## solves on guaranteed and midpoint bases as well as current.
      element SolveBasis                       {gen_basis}
-    ,##
+    ,## Age at which a solve begins  (inclusive).
      element SolveBeginTime                   {duration_int}
-    ,##
+    ,## Policy year in which a solve begins (inclusive).
      element SolveBeginYear                   {duration_int}
-    ,##
+    ,## Age at which a solve ends (exclusive).
      element SolveEndTime                     {duration_int}
-    ,##
+    ,## Policy year at which a solve ends (exclusive).
      element SolveEndYear                     {duration_int}
-    ,##
+    ,## Point at which a solve begins.
      element SolveFromWhich                   {from_point}
-    ,##
+    ,## Separate-account basis for a solve: lmi permits solves on
+     ## the basis of the hypothetical rate, half that rate, or zero.
      element SolveSeparateAccountBasis        {sep_basis}
-    ,##
+    ,## Solve goal.
      element SolveTarget                      {solve_target}
-    ,##
+    ,## Cash surrender value used as solve goal.
      element SolveTargetCashSurrenderValue    {nonnegative_double}
-    ,##
+    ,## Age at which a solve target is to be achieved.
      element SolveTargetTime                  {duration_int}
-    ,##
+    ,## Policy year in which a solve target is to be achieved.
      element SolveTargetYear                  {duration_int}
-    ,##
+    ,## Point at which a solve target is to be achieved.
      element SolveTgtAtWhich                  {to_point}
-    ,##
+    ,## Point at which a solve ends.
      element SolveToWhich                     {to_point}
-    ,##
+    ,## Parameter to be solved for.
      element SolveType                        {solve_type}
-    ,##
+    ,## Specified amount for each policy year since issue: used only
+     ## for certain surrender charges.
      element SpecamtHistory                   {numeric_sequence}
-    ,##
+    ,## Specified amount.
      element SpecifiedAmount                  {specamt_sequence}
-    ,##
+    ,## [obsolete]
      element SpecifiedAmountFromIssue         {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element SpecifiedAmountFromRetirement    {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element SpecifiedAmountStrategyFromIssue {sa_strategy}
-    ,##
+    ,## Spouse's insurance age on effective date of spouse rider.
      element SpouseIssueAge                   {age_int}
-    ,##
+    ,## Spouse term rider: elected or not.
      element SpouseRider                      {yes_or_no}
-    ,##
+    ,## Spouse term rider: face amount.
      element SpouseRiderAmount                {nonnegative_double}
-    ,##
+    ,## Insured's address: state.
      element State                            {state}
-    ,##
+    ,## State that approves policy form and rate filing, and governs
+     ## everything else except premium tax.
      element StateOfJurisdiction              {state}
-    ,##
+    ,## Substandard table rating.
      element SubstandardTable                 {table_rating}
-    ,##
+    ,## User-designed supplemental illustration: first column.
      element SupplementalReportColumn00       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: second column.
      element SupplementalReportColumn01       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: third column.
      element SupplementalReportColumn02       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: fourth column.
      element SupplementalReportColumn03       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: fifth column.
      element SupplementalReportColumn04       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: sixth column.
      element SupplementalReportColumn05       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: seventh column.
      element SupplementalReportColumn06       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: eighth column.
      element SupplementalReportColumn07       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: ninth column.
      element SupplementalReportColumn08       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: tenth column.
      element SupplementalReportColumn09       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: eleventh column.
      element SupplementalReportColumn10       {report_column}
-    ,##
+    ,## User-designed supplemental illustration: twelfth column.
      element SupplementalReportColumn11       {report_column}
-    ,##
+    ,## Presumed age at death, for partial mortality.
      element SurviveToAge                     {age_int}
-    ,##
+    ,## Presumed moment of death, for partial mortality.
      element SurviveToType                    {survival_limit}
-    ,##
+    ,## Presumed policy year of death, for partial mortality.
      element SurviveToYear                    {duration_int}
-    ,##
+    ,## Insured's tax bracket.
      element TaxBracket                       {numeric_sequence}
-    ,##
+    ,## Order in which term and base are affected by changes in total
+     ## specified amount.
      element TermAdjustmentMethod             {term_adj_method}
-    ,##
+    ,## Term rider on main insured: elected or not.
      element TermRider                        {yes_or_no}
-    ,##
+    ,## Term rider on main insured: face amount.
      element TermRiderAmount                  {nonnegative_double}
-    ,##
+    ,## Term rider as proportion of term and base combined.
      element TermRiderProportion              {proportion_double}
-    ,##
+    ,## Treat term rider as proportion of term and base combined.
      element TermRiderUseProportion           {yes_or_no}
-    ,##
+    ,## Initial specified amount of term and base combined, when term
+     ## rider is specified as a proportion of this total.
      element TotalSpecifiedAmount             {nonnegative_double}
-    ,##
+    ,## Underwriting class.
      element UnderwritingClass                {class}
-    ,##
+    ,## Use mean separate-account fee: cf. 'fund_input_method'.
      element UseAverageOfAllFunds             {yes_or_no}
-    ,##
+    ,## Use current declared rate (read from authenticated database)
+     ## instead of entering the crediting rate explicitly.
      element UseCurrentDeclaredRate           {yes_or_no}
-    ,##
+    ,## Let date of birth override issue age.
      element UseDOB                           {yes_or_no}
-    ,##
+    ,## Use experience rating, on the few contracts that offer it.
      element UseExperienceRating              {yes_or_no}
-    ,##
+    ,## Illustrate "partial mortality": i.e., reflect assumed deaths
+     ## in a composite illustration.
      element UsePartialMortality              {yes_or_no}
-    ,##
+    ,## Waiver of premium benefit: elected or not.
      element WaiverOfPremiumBenefit           {yes_or_no}
-    ,##
+    ,## Reinterpret input withdrawals as loans after tax basis recovered.
      element WithdrawToBasisThenLoan          {yes_or_no}
-    ,##
+    ,## Partial surrender.
      element Withdrawal                       {numeric_sequence}
-    ,##
+    ,## [obsolete]
      element WithdrawalAmount                 {nonnegative_double}
-    ,##
+    ,## [obsolete]
      element WithdrawalFromAge                {age_int}
-    ,##
+    ,## [obsolete]
      element WithdrawalFromAlternative        {from_point}
-    ,##
+    ,## [obsolete]
      element WithdrawalFromDuration           {duration_int}
-    ,##
+    ,## [obsolete]
      element WithdrawalToAge                  {age_int}
-    ,##
+    ,## [obsolete]
      element WithdrawalToAlternative          {to_point}
-    ,##
+    ,## [obsolete]
      element WithdrawalToDuration             {duration_int}
-    ,##
+    ,## Insured's address: zip code.
      element ZipCode                          {text}
     }
 
@@ -438,62 +490,78 @@
 
 # Numeric-range types.
 
+## Floating-point number greater than or equal to zero.
 nonnegative_double = xsd:double             {minInclusive = "0"                
               }
 
+## Floating-point number between zero and one, inclusive.
 proportion_double  = xsd:double             {minInclusive = "0"       
maxInclusive = "1"      }
 
-# Calendar-date bounds: [1752-09-14, 9999-12-31]
+## Julian Day Number between 1752-09-14 and 9999-12-31, inclusive.
 calendar_date_int  = xsd:nonNegativeInteger {minInclusive = "2361222" 
maxInclusive = "5373484"}
 
+## Attained age: integer between zero and 99, inclusive.
 age_int            = xsd:nonNegativeInteger {                         
maxInclusive = "99"     }
 
+## Time interval in years: integer between zero and 100, inclusive.
 duration_int       = xsd:nonNegativeInteger {                         
maxInclusive = "100"    }
 
+## Time interval in months: integer between zero and eleven, inclusive.
 month_int          = xsd:nonNegativeInteger {                         
maxInclusive = "11"     }
 
 # Enumerations.
 
+## 'Yes' or 'No'. 'No' is listed first because it is usually the better 
default.
 yes_or_no =
       "No"
     | "Yes"
 
+## Gender. 'Unisex' is for contracts that don't distinguish rates by gender.
 gender =
       "Female"
     | "Male"
     | "Unisex"
 
+## Smoking. 'Unismoke' is for contracts that don't distinguish rates
+## by smoking. Some contracts speak of tobacco use instead of smoking,
+## but none use both, so a single set of enumerators suffices.
 smoking =
       "Smoker"
     | "Nonsmoker"
     | "Unismoke"
 
+## Underwriting class. Use "Rated" for contracts with table ratings.
 class =
       "Preferred"
     | "Standard"
     | "Rated"
     | "Ultra"
 
+## Death benefit option: 'A' = level; 'B' = increasing; 'ROP' = return of 
premium.
 dbopt =
       "A"
     | "B"
     | "ROP"
 
+## Payment mode.
 mode =
       "Annual"
     | "Semiannual"
     | "Quarterly"
     | "Monthly"
 
+## Basis for expense and general-account rates.
 gen_basis =
       "Current"
     | "Guaranteed"
     | "Midpoint"
 
+## Basis for separate-account rates.
 sep_basis =
       "Hypothetical"
     | "Zero"
     | "Half of hypothetical"
 
+## Type of underwriting.
 uw_basis =
       "Medical"
     | "Paramedical"
@@ -501,6 +569,7 @@
     | "Simplified issue"
     | "Guaranteed issue"
 
+## Industry-standard table rating, or 'None'.
 table_rating =
       "None"
     | "A=+25%"
@@ -514,6 +583,7 @@
     | "L=+300%"
     | "P=+400%"
 
+## Parameter to be solved for.
 solve_type =
       "No solve"
     | "Specified amount"
@@ -522,12 +592,17 @@
     | "Loan"
     | "Withdrawal"
 
+## Solve goal.
 solve_target =
       "Endowment"
     | "Target CSV"
     | "CSV = tax basis"
     | "Avoid MEC"
 
+## Optional strategy to determine payment as a function of specified amount.
+## 'PmtInputScalar' is obsolete.
+## 'PmtMEP' uses 7702A 7PP rate.
+## 'Table' uses an external table (e.g., New York Table D for group insurance).
 pmt_strategy =
       "PmtInputScalar"
     | "PmtMinimum"
@@ -538,6 +613,9 @@
     | "PmtCorridor"
     | "PmtTable"
 
+## Optional strategy to determine specified amount as a function of premium.
+## 'SAInputScalar' is obsolete.
+## 'SAMEP' uses 7702A 7PP rate.
 sa_strategy =
       "SAInputScalar"
     | "SAMaximum"
@@ -548,38 +626,67 @@
     | "SACorridor"
     | "SASalary"
 
+## General-account rate: before or after spread.
 gen_acct_rate_type =
       "Credited rate"
     | "Earned rate"
 
+## Separate-account rate: before or after spread.
 sep_acct_rate_type =
       "Net rate"
     | "Gross rate"
 
+## Loan rate: fixed or variable.
 loan_rate_type =
       "Fixed loan rate"
     | "Variable loan rate"
 
+## Fund-allocation overrides, for payments that aren't peremptorily
+## allocated to the general account (e.g., employer payments on some
+## group UL contracts might always go into the general account).
+## Conceptually:
+## 'Average': use mean separate-account fee.
+## 'Override': use scalar input separate-account fee.
+## 'Choose': respect input fund allocations.
+## However, there's no GUI for fund allocation yet, so, for the nonce,
+## the meanings in practice are:
+## 'Average': allocate all payments to separate account.
+## 'Choose': allocate all payments to general account.
+## Reason: the GUI, once it exists, will by default allocate all
+## payments to the general account if no separate-account funds are
+## selected.
 fund_input_method =
       "Average fund"
     | "Override fund"
     | "Choose funds"
 
+## Order in which different individuals in a census are processed.
+## By default, illustrations are created independently, in series:
+## one life at a time. Alternatively, all lives may be run together
+## in parallel, which requires more memory but permits them to affect
+## each other, as when individual charges depend on total case assets.
 run_order =
       "Life by life"
     | "Month by month"
 
+## Presumed moment of death, for partial mortality.
 survival_limit =
       "No survival limit"
     | "Survive to age limit"
     | "Survive to duration limit"
     | "Survive to life expectancy"
 
+## Order in which term and base are affected by changes in total
+## specified amount.
 term_adj_method =
       "Adjust base first"
     | "Adjust term first"
     | "Adjust base and term proportionately"
 
+## USPS two-letter abbreviations for the fifty US states, plus
+##   'DC' (District of Columbia)
+##   'PR' (Puerto Rico)
+## and 'XX', a fictitious state used for non-US business.
 state =
       "AL" | "AK" | "AZ" | "AR" | "CA" | "CO" | "CT" | "DE" | "DC" | "FL"
     | "GA" | "HI" | "ID" | "IL" | "IN" | "IA" | "KS" | "KY" | "LA" | "ME"
@@ -589,6 +696,7 @@
     | "WI" | "WY"
     | "XX"
 
+## International standard country code [ISO 3166-1-Alpha-2 as of 2000-08-21].
 country =
       "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AN" | "AO" | "AQ"
     | "AR" | "AS" | "AT" | "AU" | "AW" | "AZ" | "BA" | "BB" | "BD" | "BE"
@@ -615,15 +723,21 @@
     | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN"
     | "VU" | "WF" | "WS" | "YE" | "YT" | "YU" | "ZA" | "ZM" | "ZW"
 
+## 7702 definitional test, if any.
 defn_life_ins =
       "CVAT"
     | "GPT"
     | "Not 7702 compliant"
 
+## Special logic, if any, to avoid a MEC. Formerly, another choice
+## tried to avoid a MEC by increasing the specified amount, but that
+## proved unworkable (e.g., because of underwriting).
 mec_avoid_method =
       "Allow MEC"
     | "Reduce premium"
 
+## 7702A definition of material change. For the nonce, use
+## "Earlier of" with CVAT, and "adjustment event" with GPT.
 defn_material_change =
       "Unnecessary premium"
     | "Benefit increase"
@@ -631,18 +745,21 @@
     | "Earlier of increase or unnecessary premium"
     | "GPT adjustment event"
 
+## Inclusive start of a half-open interval, used e.g. for input sequences.
 from_point =
       "Issue"
     | "Year"
     | "Age"
     | "Retirement"
 
+## Exclusive end of a half-open interval used e.g. for input sequences.
 to_point =
       "Retirement"
     | "Year"
     | "Age"
     | "Maturity"
 
+## Column on optional supplemental report.
 report_column =
       "[none]"
     | "AttainedAge"

Modified: lmi/trunk/cell.xsd
===================================================================
--- lmi/trunk/cell.xsd  2012-04-10 17:07:36 UTC (rev 5443)
+++ lmi/trunk/cell.xsd  2012-04-10 17:12:14 UTC (rev 5444)
@@ -244,248 +244,1120 @@
       </xs:attribute>
     </xs:complexType>
   </xs:element>
-  <xs:element name="AccidentalDeathBenefit" type="yes_or_no"/>
-  <xs:element name="Address" type="xs:string"/>
-  <xs:element name="AgentAddress" type="xs:string"/>
-  <xs:element name="AgentCity" type="xs:string"/>
-  <xs:element name="AgentId" type="xs:string"/>
-  <xs:element name="AgentName" type="xs:string"/>
-  <xs:element name="AgentPhone" type="xs:string"/>
-  <xs:element name="AgentState" type="state"/>
-  <xs:element name="AgentZipCode" type="xs:string"/>
-  <xs:element name="AmortizePremiumLoad" type="yes_or_no"/>
-  <xs:element name="AvoidMecMethod" type="mec_avoid_method"/>
-  <xs:element name="BlendGender" type="yes_or_no"/>
-  <xs:element name="BlendSmoking" type="yes_or_no"/>
-  <xs:element name="CashValueEnhancementRate" type="xs:string"/>
-  <xs:element name="ChildRider" type="yes_or_no"/>
-  <xs:element name="ChildRiderAmount" type="nonnegative_double"/>
-  <xs:element name="City" type="xs:string"/>
-  <xs:element name="Comments" type="xs:string"/>
-  <xs:element name="CorporationAddress" type="xs:string"/>
-  <xs:element name="CorporationCity" type="xs:string"/>
-  <xs:element name="CorporationName" type="xs:string"/>
-  <xs:element name="CorporationPayment" type="xs:string"/>
-  <xs:element name="CorporationPaymentMode" type="xs:string"/>
-  <xs:element name="CorporationPremiumTableFactor" type="nonnegative_double"/>
-  <xs:element name="CorporationState" type="state"/>
-  <xs:element name="CorporationTaxBracket" type="xs:string"/>
-  <xs:element name="CorporationZipCode" type="xs:string"/>
-  <xs:element name="Country" type="country"/>
-  <xs:element name="CountryCoiMultiplier" type="nonnegative_double"/>
-  <xs:element name="CreateSupplementalReport" type="yes_or_no"/>
-  <xs:element name="CurrentCoiMultiplier" type="xs:string"/>
-  <xs:element name="DateOfBirth" type="calendar_date_int"/>
-  <xs:element name="DeathBenefitOption" type="xs:string"/>
-  <xs:element name="DeathBenefitOptionFromIssue" type="dbopt"/>
-  <xs:element name="DeathBenefitOptionFromRetirement" type="dbopt"/>
-  <xs:element name="DefinitionOfLifeInsurance" type="defn_life_ins"/>
-  <xs:element name="DefinitionOfMaterialChange" type="defn_material_change"/>
-  <xs:element name="Dumpin" type="nonnegative_double"/>
-  <xs:element name="EffectiveDate" type="calendar_date_int"/>
-  <xs:element name="EffectiveDateToday" type="yes_or_no"/>
-  <xs:element name="EmployeeClass" type="xs:string"/>
-  <xs:element name="ExperienceRatingInitialKFactor" type="nonnegative_double"/>
-  <xs:element name="ExperienceReserveRate" type="proportion_double"/>
-  <xs:element name="External1035ExchangeAmount" type="nonnegative_double"/>
-  <xs:element name="External1035ExchangeBasis" type="nonnegative_double"/>
-  <xs:element name="External1035ExchangeFromMec" type="yes_or_no"/>
-  <xs:element name="ExtraCompensationOnAssets" type="xs:string"/>
-  <xs:element name="ExtraCompensationOnPremium" type="xs:string"/>
-  <xs:element name="ExtraMonthlyCustodialFee" type="xs:string"/>
-  <xs:element name="FlatExtra" type="xs:string"/>
-  <xs:element name="Franchise" type="xs:string"/>
-  <xs:element name="FundAllocations" type="xs:string"/>
-  <xs:element name="FundChoiceType" type="fund_input_method"/>
-  <xs:element name="Gender" type="gender"/>
-  <xs:element name="GeneralAccountRate" type="xs:string"/>
-  <xs:element name="GeneralAccountRateType" type="gen_acct_rate_type"/>
-  <xs:element name="GroupUnderwritingType" type="uw_basis"/>
-  <xs:element name="HoneymoonEndorsement" type="yes_or_no"/>
-  <xs:element name="HoneymoonValueSpread" type="xs:string"/>
-  <xs:element name="IncludeInComposite" type="yes_or_no"/>
-  <xs:element name="IndividualPaymentAmount" type="nonnegative_double"/>
-  <xs:element name="IndividualPaymentMode" type="mode"/>
-  <xs:element name="IndividualPaymentStrategy" type="pmt_strategy"/>
-  <xs:element name="IndividualPaymentToAge" type="age_int"/>
-  <xs:element name="IndividualPaymentToAlternative" type="to_point"/>
-  <xs:element name="IndividualPaymentToDuration" type="duration_int"/>
-  <xs:element name="InforceAsOfDate" type="calendar_date_int"/>
-  <xs:element name="InforceAvBeforeLastMc" type="nonnegative_double"/>
-  <xs:element name="InforceContractMonth" type="month_int"/>
-  <xs:element name="InforceContractYear" type="duration_int"/>
-  <xs:element name="InforceCumulativeGlp" type="nonnegative_double"/>
-  <xs:element name="InforceCumulativeNoLapsePremium" 
type="nonnegative_double"/>
-  <xs:element name="InforceCumulativePayments" type="nonnegative_double"/>
-  <xs:element name="InforceDcv" type="nonnegative_double"/>
-  <xs:element name="InforceGeneralAccountValue" type="nonnegative_double"/>
-  <xs:element name="InforceGlp" type="nonnegative_double"/>
-  <xs:element name="InforceGsp" type="nonnegative_double"/>
-  <xs:element name="InforceHoneymoonValue" type="nonnegative_double"/>
-  <xs:element name="InforceIsMec" type="yes_or_no"/>
-  <xs:element name="InforceLeastDeathBenefit" type="nonnegative_double"/>
-  <xs:element name="InforceMonth" type="month_int"/>
-  <xs:element name="InforceNetExperienceReserve" type="xs:double"/>
-  <xs:element name="InforcePreferredLoanBalance" type="nonnegative_double"/>
-  <xs:element name="InforcePreferredLoanValue" type="nonnegative_double"/>
-  <xs:element name="InforceRegularLoanBalance" type="nonnegative_double"/>
-  <xs:element name="InforceRegularLoanValue" type="nonnegative_double"/>
-  <xs:element name="InforceSeparateAccountValue" type="nonnegative_double"/>
-  <xs:element name="InforceSevenPayPremium" type="nonnegative_double"/>
-  <xs:element name="InforceTaxBasis" type="nonnegative_double"/>
-  <xs:element name="InforceYear" type="duration_int"/>
-  <xs:element name="InforceYtdNetCoiCharge" type="nonnegative_double"/>
-  <xs:element name="InputFundManagementFee" type="nonnegative_double"/>
-  <xs:element name="InsuredName" type="xs:string"/>
-  <xs:element name="InsuredPremiumTableFactor" type="nonnegative_double"/>
-  <xs:element name="Internal1035ExchangeAmount" type="nonnegative_double"/>
-  <xs:element name="Internal1035ExchangeBasis" type="nonnegative_double"/>
-  <xs:element name="Internal1035ExchangeFromMec" type="yes_or_no"/>
-  <xs:element name="IssueAge" type="age_int"/>
-  <xs:element name="LastCoiReentryDate" type="calendar_date_int"/>
-  <xs:element name="LastMaterialChangeDate" type="calendar_date_int"/>
-  <xs:element name="LoanAmount" type="nonnegative_double"/>
-  <xs:element name="LoanFromAge" type="age_int"/>
-  <xs:element name="LoanFromAlternative" type="from_point"/>
-  <xs:element name="LoanFromDuration" type="duration_int"/>
-  <xs:element name="LoanRate" type="proportion_double"/>
-  <xs:element name="LoanRateType" type="loan_rate_type"/>
-  <xs:element name="LoanToAge" type="age_int"/>
-  <xs:element name="LoanToAlternative" type="to_point"/>
-  <xs:element name="LoanToDuration" type="duration_int"/>
-  <xs:element name="MaleProportion" type="proportion_double"/>
-  <xs:element name="MaximumNaar" type="nonnegative_double"/>
-  <xs:element name="NewLoan" type="xs:string"/>
-  <xs:element name="NonsmokerProportion" type="proportion_double"/>
-  <xs:element name="NumberOfIdenticalLives" type="xs:nonNegativeInteger"/>
-  <xs:element name="OverrideCoiMultiplier" type="yes_or_no"/>
-  <xs:element name="OverrideExperienceReserveRate" type="yes_or_no"/>
-  <xs:element name="OverrideFundManagementFee" type="yes_or_no"/>
-  <xs:element name="PartialMortalityMultiplier" type="xs:string"/>
-  <xs:element name="Payment" type="xs:string"/>
-  <xs:element name="PaymentMode" type="xs:string"/>
-  <xs:element name="PolicyNumber" type="xs:string"/>
-  <xs:element name="PostHoneymoonSpread" type="proportion_double"/>
-  <xs:element name="PremiumHistory" type="xs:string"/>
-  <xs:element name="PremiumTaxState" type="state"/>
-  <xs:element name="ProductName" type="xs:string"/>
-  <xs:element name="ProjectedSalary" type="xs:string"/>
-  <xs:element name="RetireesCanEnroll" type="yes_or_no"/>
-  <xs:element name="RetirementAge" type="age_int"/>
-  <xs:element name="RunOrder" type="run_order"/>
-  <xs:element name="SalarySpecifiedAmountCap" type="nonnegative_double"/>
-  <xs:element name="SalarySpecifiedAmountFactor" type="nonnegative_double"/>
-  <xs:element name="SalarySpecifiedAmountOffset" type="nonnegative_double"/>
-  <xs:element name="SeparateAccountRate" type="xs:string"/>
-  <xs:element name="SeparateAccountRateType" type="sep_acct_rate_type"/>
-  <xs:element name="Smoking" type="smoking"/>
-  <xs:element name="SolveBasis" type="gen_basis"/>
-  <xs:element name="SolveBeginTime" type="duration_int"/>
-  <xs:element name="SolveBeginYear" type="duration_int"/>
-  <xs:element name="SolveEndTime" type="duration_int"/>
-  <xs:element name="SolveEndYear" type="duration_int"/>
-  <xs:element name="SolveFromWhich" type="from_point"/>
-  <xs:element name="SolveSeparateAccountBasis" type="sep_basis"/>
-  <xs:element name="SolveTarget" type="solve_target"/>
-  <xs:element name="SolveTargetCashSurrenderValue" type="nonnegative_double"/>
-  <xs:element name="SolveTargetTime" type="duration_int"/>
-  <xs:element name="SolveTargetYear" type="duration_int"/>
-  <xs:element name="SolveTgtAtWhich" type="to_point"/>
-  <xs:element name="SolveToWhich" type="to_point"/>
-  <xs:element name="SolveType" type="solve_type"/>
-  <xs:element name="SpecamtHistory" type="xs:string"/>
-  <xs:element name="SpecifiedAmount" type="xs:string"/>
-  <xs:element name="SpecifiedAmountFromIssue" type="nonnegative_double"/>
-  <xs:element name="SpecifiedAmountFromRetirement" type="nonnegative_double"/>
-  <xs:element name="SpecifiedAmountStrategyFromIssue" type="sa_strategy"/>
-  <xs:element name="SpouseIssueAge" type="age_int"/>
-  <xs:element name="SpouseRider" type="yes_or_no"/>
-  <xs:element name="SpouseRiderAmount" type="nonnegative_double"/>
-  <xs:element name="State" type="state"/>
-  <xs:element name="StateOfJurisdiction" type="state"/>
-  <xs:element name="SubstandardTable" type="table_rating"/>
-  <xs:element name="SupplementalReportColumn00" type="report_column"/>
-  <xs:element name="SupplementalReportColumn01" type="report_column"/>
-  <xs:element name="SupplementalReportColumn02" type="report_column"/>
-  <xs:element name="SupplementalReportColumn03" type="report_column"/>
-  <xs:element name="SupplementalReportColumn04" type="report_column"/>
-  <xs:element name="SupplementalReportColumn05" type="report_column"/>
-  <xs:element name="SupplementalReportColumn06" type="report_column"/>
-  <xs:element name="SupplementalReportColumn07" type="report_column"/>
-  <xs:element name="SupplementalReportColumn08" type="report_column"/>
-  <xs:element name="SupplementalReportColumn09" type="report_column"/>
-  <xs:element name="SupplementalReportColumn10" type="report_column"/>
-  <xs:element name="SupplementalReportColumn11" type="report_column"/>
-  <xs:element name="SurviveToAge" type="age_int"/>
-  <xs:element name="SurviveToType" type="survival_limit"/>
-  <xs:element name="SurviveToYear" type="duration_int"/>
-  <xs:element name="TaxBracket" type="xs:string"/>
-  <xs:element name="TermAdjustmentMethod" type="term_adj_method"/>
-  <xs:element name="TermRider" type="yes_or_no"/>
-  <xs:element name="TermRiderAmount" type="nonnegative_double"/>
-  <xs:element name="TermRiderProportion" type="proportion_double"/>
-  <xs:element name="TermRiderUseProportion" type="yes_or_no"/>
-  <xs:element name="TotalSpecifiedAmount" type="nonnegative_double"/>
-  <xs:element name="UnderwritingClass" type="class"/>
-  <xs:element name="UseAverageOfAllFunds" type="yes_or_no"/>
-  <xs:element name="UseCurrentDeclaredRate" type="yes_or_no"/>
-  <xs:element name="UseDOB" type="yes_or_no"/>
-  <xs:element name="UseExperienceRating" type="yes_or_no"/>
-  <xs:element name="UsePartialMortality" type="yes_or_no"/>
-  <xs:element name="WaiverOfPremiumBenefit" type="yes_or_no"/>
-  <xs:element name="WithdrawToBasisThenLoan" type="yes_or_no"/>
-  <xs:element name="Withdrawal" type="xs:string"/>
-  <xs:element name="WithdrawalAmount" type="nonnegative_double"/>
-  <xs:element name="WithdrawalFromAge" type="age_int"/>
-  <xs:element name="WithdrawalFromAlternative" type="from_point"/>
-  <xs:element name="WithdrawalFromDuration" type="duration_int"/>
-  <xs:element name="WithdrawalToAge" type="age_int"/>
-  <xs:element name="WithdrawalToAlternative" type="to_point"/>
-  <xs:element name="WithdrawalToDuration" type="duration_int"/>
-  <xs:element name="ZipCode" type="xs:string"/>
+  <xs:element name="AccidentalDeathBenefit" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Accidental death benefit: elected or 
not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Address" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's address: number and 
street.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentAddress" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent's address: number and street.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentCity" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent's address: city.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentId" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent ID code.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentName" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent's full name.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentPhone" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent's phone number.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentState" type="state">
+    <xs:annotation>
+      <xs:documentation>Agent's address: state.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AgentZipCode" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agent's address: zip code.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AmortizePremiumLoad" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Amortize premium load (occasionally used for 
BOLI).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="AvoidMecMethod" type="mec_avoid_method">
+    <xs:annotation>
+      <xs:documentation>Special logic, if any, to avoid a 
MEC.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="BlendGender" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Custom-blend rates by gender.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="BlendSmoking" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Custom-blend rates by smoking.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CashValueEnhancementRate" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Negative surrender charge as proportion of total 
account value.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ChildRider" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Child(ren) term rider: elected or 
not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ChildRiderAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Child(ren) term rider: face amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="City" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's address: city.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Comments" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Free-form comments.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationAddress" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's address: number and 
street.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationCity" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's address: city.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationName" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's name.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationPayment" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's planned premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationPaymentMode" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's premium mode.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationPremiumTableFactor" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Corporation's tabular-premium 
multiplier.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationState" type="state">
+    <xs:annotation>
+      <xs:documentation>Corporation's address: state.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationTaxBracket" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's tax bracket.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CorporationZipCode" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Corporation's address: zip code.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Country" type="country">
+    <xs:annotation>
+      <xs:documentation>Insured's address: country.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CountryCoiMultiplier" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>COI multiplier for country.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CreateSupplementalReport" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: elected or 
not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="CurrentCoiMultiplier" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Multiplier for current COI rates.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DateOfBirth" type="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Insured's date of birth.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DeathBenefitOption" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Death benefit option.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DeathBenefitOptionFromIssue" type="dbopt">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DeathBenefitOptionFromRetirement" type="dbopt">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DefinitionOfLifeInsurance" type="defn_life_ins">
+    <xs:annotation>
+      <xs:documentation>7702 definitional test.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="DefinitionOfMaterialChange" type="defn_material_change">
+    <xs:annotation>
+      <xs:documentation>7702A definition of material change.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Dumpin" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Dump-in: i.e., first-year-only extra premium other 
than a 1035 exchange.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="EffectiveDate" type="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Effective date: for UL, date of first monthly 
deduction.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="EffectiveDateToday" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Use today's date as effective date: handy for new 
business.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="EmployeeClass" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Employee class, used for grouping individuals in order 
to make
+input easier. E.g., specified amount for 'partners' might be
+two times salary, while 'all others' get a flat $50K.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ExperienceRatingInitialKFactor" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Factor for amortizing mortality profit into future 
charges.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ExperienceReserveRate" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Overridden reserve rate for experience 
rating.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="External1035ExchangeAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Amount of 1035 exchange from a different 
insurer.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="External1035ExchangeBasis" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Tax basis of 1035 exchange from a different 
insurer.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="External1035ExchangeFromMec" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>MEC status of 1035 exchange from a different 
insurer.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ExtraCompensationOnAssets" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Extra charge on separate-account assets. The 
motivation is to
+let end users add a negotiated asset trailer without changing
+the product database, but the field may be used for any extra
+charge in the nature of M&amp;E.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ExtraCompensationOnPremium" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Extra premium load. The motivation is to let end users 
add a
+negotiated commission without changing the product database,
+but the field may be used for any extra load on premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ExtraMonthlyCustodialFee" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Extra policy fee. The motivation is to let end users 
add an
+additional monthly custodial fee for a custom fund, but the
+field may be used for any extra monthly fee.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="FlatExtra" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Annual flat extra per thousand of specified 
amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Franchise" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Agency or brokerage code.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="FundAllocations" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>As yet unused: cf. 
'fund_input_method'.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="FundChoiceType" type="fund_input_method">
+    <xs:annotation>
+      <xs:documentation>Fund-allocation override: cf. 
'fund_input_method'.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Gender" type="gender">
+    <xs:annotation>
+      <xs:documentation>Insured's gender for insurance 
purposes.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="GeneralAccountRate" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>General-account interest rate as a decimal: e.g., 
'0.03' for 3%.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="GeneralAccountRateType" type="gen_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>General-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="GroupUnderwritingType" type="uw_basis">
+    <xs:annotation>
+      <xs:documentation>Type of underwriting, e.g. guaranteed 
issue.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="HoneymoonEndorsement" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Honeymoon: elected or not. This is a temporary 
secondary
+guarantee that enhances surrender values in early years, by
+setting a minimum CSV equal to gross premium accumulated at a
+special interest rate, with no monthly deductions taken.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="HoneymoonValueSpread" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Interest spread for honeymoon value, which grows at 
the net
+general account rate less this decrement.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IncludeInComposite" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Include this life in composite: default = 'Yes'. This 
field
+permits excluding certain lives from a composite without
+deleting them from a census.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentMode" type="mode">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentStrategy" type="pmt_strategy">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentToAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentToAlternative" type="to_point">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IndividualPaymentToDuration" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceAsOfDate" type="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Date as of which inforce values are provided. This is 
taken to
+refer to the first moment of the day, before monthiversary
+processing. Some admin systems find it more convenient to
+provide values as of the last moment of the preceding day; in
+that case, this field should indicate the day following that
+preceding day.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceAvBeforeLastMc" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce account value before last material change, for 
7702A.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceContractMonth" type="month_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceContractYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceCumulativeGlp" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce cumulative 7702 guideline level 
premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceCumulativeNoLapsePremium" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce cumulative no-lapse premium, for contracts 
that offer
+a no-lapse guarantee as long as a cumulative minimum premium
+is paid.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceCumulativePayments" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce cumulative payments: sum of all gross premiums,
+including dump-ins and 1035 exchange proceeds.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceDcv" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce 7702A deemed cash value.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceGeneralAccountValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce account value in the general 
account.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceGlp" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce 7702 guideline level 
premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceGsp" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce 7702 guideline single 
premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceHoneymoonValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce honeymoon value. Zero if honeymoon has expired 
or
+was never present.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceIsMec" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>MEC status of inforce contract.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceLeastDeathBenefit" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce 7702A least death benefit.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceMonth" type="month_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceNetExperienceReserve" type="xs:double">
+    <xs:annotation>
+      <xs:documentation>Inforce net reserve for experience 
rating.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforcePreferredLoanBalance" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce balance (total indebtedness) for preferred 
loans.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforcePreferredLoanValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce loaned account value (excluding accrued 
interest) for
+preferred loans.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceRegularLoanBalance" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce balance (total indebtedness) for regular 
loans.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceRegularLoanValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce loaned account value (excluding accrued 
interest) for
+regular loans.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceSeparateAccountValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce account value in all separate accounts, 
combined.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceSevenPayPremium" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce 7702A seven-pay premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceTaxBasis" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce tax basis.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InforceYtdNetCoiCharge" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Inforce year-to-date "net" COI charge for experience 
rating.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InputFundManagementFee" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Investment management fee of a custom 
fund.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InsuredName" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's full name.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="InsuredPremiumTableFactor" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Insured's tabular-premium 
multiplier.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Internal1035ExchangeAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Amount of 1035 exchange from the same insurer; 
distinguished
+from external 1035 because an internal exchange may not be
+subject to premium tax.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Internal1035ExchangeBasis" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Tax basis of 1035 exchange from the same 
insurer.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Internal1035ExchangeFromMec" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>MEC status of 1035 exchange from the same 
insurer.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="IssueAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>Insurance age on effective date.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LastCoiReentryDate" type="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Most recent group-underwriting date, for group 
contracts that
+reenter a select and ultimate table of COI rates periodically
+upon successful re-underwriting (for active lives only).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LastMaterialChangeDate" type="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Date of most recent 7702A material 
change.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanFromAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanFromAlternative" type="from_point">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanFromDuration" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanRate" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Loan interest rate, if it is 
variable.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanRateType" type="loan_rate_type">
+    <xs:annotation>
+      <xs:documentation>Loan rate: fixed or variable.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanToAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanToAlternative" type="to_point">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="LoanToDuration" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="MaleProportion" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Proportion of males when rates are custom-blended by 
gender.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="MaximumNaar" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Maximum net amount at risk, as constrained by 
reinsurance.
+Some contracts in the high-net-worth market force money out to
+prevent corridor death benefit from exceeding available
+reinsurance.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="NewLoan" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>New loan taken in cash (excluding capitalized 
interest).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="NonsmokerProportion" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Proportion of nonsmokers when rates are custom-blended 
by smoking.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="NumberOfIdenticalLives" type="xs:nonNegativeInteger">
+    <xs:annotation>
+      <xs:documentation>Number of identical lives represented by a single 
census cell.
+It is sometimes convenient to approximate a population by
+specifying a few cells and indicating the number of lives each
+one represents.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="OverrideCoiMultiplier" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Override country COI multiplier.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="OverrideExperienceReserveRate" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Override reserve rate for experience 
rating.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="OverrideFundManagementFee" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Override investment management fee: used only with 
custom funds.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PartialMortalityMultiplier" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Multiplier applied to partial-mortality 
table.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Payment" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's planned premium.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PaymentMode" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's premium mode.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PolicyNumber" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Policy number: a unique identifier, which, despite its
+commonly-used name, is often not purely numeric.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PostHoneymoonSpread" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Interest decrement applied to crediting rate after the
+honeymoon expires--designed to recover the cost of providing
+the honeymoon.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PremiumHistory" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>7702A "amounts paid" for each "contract year" since 
beginning
+of most recent seven-pay period; zero if not in a seven-pay
+period.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="PremiumTaxState" type="state">
+    <xs:annotation>
+      <xs:documentation>State to which premium tax is paid.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ProductName" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Product (plan): enumerators depend on run-time 
context.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ProjectedSalary" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Projected salary: used for salary-based 
benefits.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="RetireesCanEnroll" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Retirees allowed to enroll (or not). This is handy for
+warning when retirees are unintentionally included in a
+census.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="RetirementAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>Insured's retirement age.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="RunOrder" type="run_order">
+    <xs:annotation>
+      <xs:documentation>Order in which different individuals in a census are
+processed: cf. 'run_order'.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SalarySpecifiedAmountCap" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Maximum salary-based specified 
amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SalarySpecifiedAmountFactor" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Salary multiple used to determine specified 
amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SalarySpecifiedAmountOffset" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Amount to be subtracted from salary-based specified 
amount,
+intended to represent basic group term coverage.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SeparateAccountRate" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Separate-account hypothetical rate as a decimal: e.g., 
'0.06' for 6%.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SeparateAccountRateType" type="sep_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>Separate-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Smoking" type="smoking">
+    <xs:annotation>
+      <xs:documentation>Insured's smoking or tobacco use.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveBasis" type="gen_basis">
+    <xs:annotation>
+      <xs:documentation>Expense and general-account basis for a solve: lmi 
permits
+solves on guaranteed and midpoint bases as well as current.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveBeginTime" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Age at which a solve begins  
(inclusive).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveBeginYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Policy year in which a solve begins 
(inclusive).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveEndTime" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Age at which a solve ends 
(exclusive).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveEndYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Policy year at which a solve ends 
(exclusive).</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveFromWhich" type="from_point">
+    <xs:annotation>
+      <xs:documentation>Point at which a solve begins.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveSeparateAccountBasis" type="sep_basis">
+    <xs:annotation>
+      <xs:documentation>Separate-account basis for a solve: lmi permits solves 
on
+the basis of the hypothetical rate, half that rate, or zero.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveTarget" type="solve_target">
+    <xs:annotation>
+      <xs:documentation>Solve goal.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveTargetCashSurrenderValue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Cash surrender value used as solve 
goal.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveTargetTime" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Age at which a solve target is to be 
achieved.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveTargetYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Policy year in which a solve target is to be 
achieved.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveTgtAtWhich" type="to_point">
+    <xs:annotation>
+      <xs:documentation>Point at which a solve target is to be 
achieved.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveToWhich" type="to_point">
+    <xs:annotation>
+      <xs:documentation>Point at which a solve ends.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SolveType" type="solve_type">
+    <xs:annotation>
+      <xs:documentation>Parameter to be solved for.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpecamtHistory" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Specified amount for each policy year since issue: 
used only
+for certain surrender charges.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpecifiedAmount" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Specified amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpecifiedAmountFromIssue" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpecifiedAmountFromRetirement" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpecifiedAmountStrategyFromIssue" type="sa_strategy">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpouseIssueAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>Spouse's insurance age on effective date of spouse 
rider.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpouseRider" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Spouse term rider: elected or not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SpouseRiderAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Spouse term rider: face amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="State" type="state">
+    <xs:annotation>
+      <xs:documentation>Insured's address: state.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="StateOfJurisdiction" type="state">
+    <xs:annotation>
+      <xs:documentation>State that approves policy form and rate filing, and 
governs
+everything else except premium tax.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SubstandardTable" type="table_rating">
+    <xs:annotation>
+      <xs:documentation>Substandard table rating.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn00" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: first 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn01" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: second 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn02" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: third 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn03" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: fourth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn04" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: fifth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn05" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: sixth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn06" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: seventh 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn07" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: eighth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn08" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: ninth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn09" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: tenth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn10" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: eleventh 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SupplementalReportColumn11" type="report_column">
+    <xs:annotation>
+      <xs:documentation>User-designed supplemental illustration: twelfth 
column.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SurviveToAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>Presumed age at death, for partial 
mortality.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SurviveToType" type="survival_limit">
+    <xs:annotation>
+      <xs:documentation>Presumed moment of death, for partial 
mortality.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="SurviveToYear" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>Presumed policy year of death, for partial 
mortality.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TaxBracket" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's tax bracket.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TermAdjustmentMethod" type="term_adj_method">
+    <xs:annotation>
+      <xs:documentation>Order in which term and base are affected by changes 
in total
+specified amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TermRider" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Term rider on main insured: elected or 
not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TermRiderAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Term rider on main insured: face 
amount.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TermRiderProportion" type="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Term rider as proportion of term and base 
combined.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TermRiderUseProportion" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Treat term rider as proportion of term and base 
combined.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="TotalSpecifiedAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Initial specified amount of term and base combined, 
when term
+rider is specified as a proportion of this total.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UnderwritingClass" type="class">
+    <xs:annotation>
+      <xs:documentation>Underwriting class.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UseAverageOfAllFunds" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Use mean separate-account fee: cf. 
'fund_input_method'.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UseCurrentDeclaredRate" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Use current declared rate (read from authenticated 
database)
+instead of entering the crediting rate explicitly.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UseDOB" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Let date of birth override issue 
age.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UseExperienceRating" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Use experience rating, on the few contracts that offer 
it.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="UsePartialMortality" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Illustrate "partial mortality": i.e., reflect assumed 
deaths
+in a composite illustration.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WaiverOfPremiumBenefit" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Waiver of premium benefit: elected or 
not.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawToBasisThenLoan" type="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>Reinterpret input withdrawals as loans after tax basis 
recovered.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="Withdrawal" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Partial surrender.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalAmount" type="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalFromAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalFromAlternative" type="from_point">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalFromDuration" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalToAge" type="age_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalToAlternative" type="to_point">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="WithdrawalToDuration" type="duration_int">
+    <xs:annotation>
+      <xs:documentation>[obsolete]</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ZipCode" type="xs:string">
+    <xs:annotation>
+      <xs:documentation>Insured's address: zip code.</xs:documentation>
+    </xs:annotation>
+  </xs:element>
   <!-- It is infeasible to validate an input sequence with a regex. -->
   <!-- Numeric-range types. -->
   <xs:simpleType name="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Floating-point number greater than or equal to 
zero.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:double">
       <xs:minInclusive value="0"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Floating-point number between zero and one, 
inclusive.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:double">
       <xs:minInclusive value="0"/>
       <xs:maxInclusive value="1"/>
     </xs:restriction>
   </xs:simpleType>
-  <!-- Calendar-date bounds: [1752-09-14, 9999-12-31] -->
   <xs:simpleType name="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Julian Day Number between 1752-09-14 and 9999-12-31, 
inclusive.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:nonNegativeInteger">
       <xs:minInclusive value="2361222"/>
       <xs:maxInclusive value="5373484"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="age_int">
+    <xs:annotation>
+      <xs:documentation>Attained age: integer between zero and 99, 
inclusive.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:nonNegativeInteger">
       <xs:maxInclusive value="99"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="duration_int">
+    <xs:annotation>
+      <xs:documentation>Time interval in years: integer between zero and 100, 
inclusive.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:nonNegativeInteger">
       <xs:maxInclusive value="100"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="month_int">
+    <xs:annotation>
+      <xs:documentation>Time interval in months: integer between zero and 
eleven, inclusive.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:nonNegativeInteger">
       <xs:maxInclusive value="11"/>
     </xs:restriction>
   </xs:simpleType>
   <!-- Enumerations. -->
   <xs:simpleType name="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>'Yes' or 'No'. 'No' is listed first because it is 
usually the better default.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="No"/>
       <xs:enumeration value="Yes"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="gender">
+    <xs:annotation>
+      <xs:documentation>Gender. 'Unisex' is for contracts that don't 
distinguish rates by gender.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Female"/>
       <xs:enumeration value="Male"/>
@@ -493,6 +1365,11 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="smoking">
+    <xs:annotation>
+      <xs:documentation>Smoking. 'Unismoke' is for contracts that don't 
distinguish rates
+by smoking. Some contracts speak of tobacco use instead of smoking,
+but none use both, so a single set of enumerators suffices.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Smoker"/>
       <xs:enumeration value="Nonsmoker"/>
@@ -500,6 +1377,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="class">
+    <xs:annotation>
+      <xs:documentation>Underwriting class. Use "Rated" for contracts with 
table ratings.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Preferred"/>
       <xs:enumeration value="Standard"/>
@@ -508,6 +1388,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="dbopt">
+    <xs:annotation>
+      <xs:documentation>Death benefit option: 'A' = level; 'B' = increasing; 
'ROP' = return of premium.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="A"/>
       <xs:enumeration value="B"/>
@@ -515,6 +1398,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="mode">
+    <xs:annotation>
+      <xs:documentation>Payment mode.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Annual"/>
       <xs:enumeration value="Semiannual"/>
@@ -523,6 +1409,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="gen_basis">
+    <xs:annotation>
+      <xs:documentation>Basis for expense and general-account 
rates.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Current"/>
       <xs:enumeration value="Guaranteed"/>
@@ -530,6 +1419,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="sep_basis">
+    <xs:annotation>
+      <xs:documentation>Basis for separate-account rates.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Hypothetical"/>
       <xs:enumeration value="Zero"/>
@@ -537,6 +1429,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="uw_basis">
+    <xs:annotation>
+      <xs:documentation>Type of underwriting.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Medical"/>
       <xs:enumeration value="Paramedical"/>
@@ -546,6 +1441,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="table_rating">
+    <xs:annotation>
+      <xs:documentation>Industry-standard table rating, or 
'None'.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="None"/>
       <xs:enumeration value="A=+25%"/>
@@ -561,6 +1459,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="solve_type">
+    <xs:annotation>
+      <xs:documentation>Parameter to be solved for.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="No solve"/>
       <xs:enumeration value="Specified amount"/>
@@ -571,6 +1472,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="solve_target">
+    <xs:annotation>
+      <xs:documentation>Solve goal.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Endowment"/>
       <xs:enumeration value="Target CSV"/>
@@ -579,6 +1483,12 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="pmt_strategy">
+    <xs:annotation>
+      <xs:documentation>Optional strategy to determine payment as a function 
of specified amount.
+'PmtInputScalar' is obsolete.
+'PmtMEP' uses 7702A 7PP rate.
+'Table' uses an external table (e.g., New York Table D for group 
insurance).</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="PmtInputScalar"/>
       <xs:enumeration value="PmtMinimum"/>
@@ -591,6 +1501,11 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="sa_strategy">
+    <xs:annotation>
+      <xs:documentation>Optional strategy to determine specified amount as a 
function of premium.
+'SAInputScalar' is obsolete.
+'SAMEP' uses 7702A 7PP rate.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="SAInputScalar"/>
       <xs:enumeration value="SAMaximum"/>
@@ -603,24 +1518,49 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="gen_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>General-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Credited rate"/>
       <xs:enumeration value="Earned rate"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="sep_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>Separate-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Net rate"/>
       <xs:enumeration value="Gross rate"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="loan_rate_type">
+    <xs:annotation>
+      <xs:documentation>Loan rate: fixed or variable.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Fixed loan rate"/>
       <xs:enumeration value="Variable loan rate"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="fund_input_method">
+    <xs:annotation>
+      <xs:documentation>Fund-allocation overrides, for payments that aren't 
peremptorily
+allocated to the general account (e.g., employer payments on some
+group UL contracts might always go into the general account).
+Conceptually:
+'Average': use mean separate-account fee.
+'Override': use scalar input separate-account fee.
+'Choose': respect input fund allocations.
+However, there's no GUI for fund allocation yet, so, for the nonce,
+the meanings in practice are:
+'Average': allocate all payments to separate account.
+'Choose': allocate all payments to general account.
+Reason: the GUI, once it exists, will by default allocate all
+payments to the general account if no separate-account funds are
+selected.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Average fund"/>
       <xs:enumeration value="Override fund"/>
@@ -628,12 +1568,22 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="run_order">
+    <xs:annotation>
+      <xs:documentation>Order in which different individuals in a census are 
processed.
+By default, illustrations are created independently, in series:
+one life at a time. Alternatively, all lives may be run together
+in parallel, which requires more memory but permits them to affect
+each other, as when individual charges depend on total case 
assets.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Life by life"/>
       <xs:enumeration value="Month by month"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="survival_limit">
+    <xs:annotation>
+      <xs:documentation>Presumed moment of death, for partial 
mortality.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="No survival limit"/>
       <xs:enumeration value="Survive to age limit"/>
@@ -642,6 +1592,10 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="term_adj_method">
+    <xs:annotation>
+      <xs:documentation>Order in which term and base are affected by changes 
in total
+specified amount.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Adjust base first"/>
       <xs:enumeration value="Adjust term first"/>
@@ -649,6 +1603,12 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="state">
+    <xs:annotation>
+      <xs:documentation>USPS two-letter abbreviations for the fifty US states, 
plus
+  'DC' (District of Columbia)
+  'PR' (Puerto Rico)
+and 'XX', a fictitious state used for non-US business.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="AL"/>
       <xs:enumeration value="AK"/>
@@ -706,6 +1666,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="country">
+    <xs:annotation>
+      <xs:documentation>International standard country code [ISO 
3166-1-Alpha-2 as of 2000-08-21].</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="AD"/>
       <xs:enumeration value="AE"/>
@@ -949,6 +1912,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="defn_life_ins">
+    <xs:annotation>
+      <xs:documentation>7702 definitional test, if any.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="CVAT"/>
       <xs:enumeration value="GPT"/>
@@ -956,12 +1922,21 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="mec_avoid_method">
+    <xs:annotation>
+      <xs:documentation>Special logic, if any, to avoid a MEC. Formerly, 
another choice
+tried to avoid a MEC by increasing the specified amount, but that
+proved unworkable (e.g., because of underwriting).</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Allow MEC"/>
       <xs:enumeration value="Reduce premium"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="defn_material_change">
+    <xs:annotation>
+      <xs:documentation>7702A definition of material change. For the nonce, use
+"Earlier of" with CVAT, and "adjustment event" with GPT.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Unnecessary premium"/>
       <xs:enumeration value="Benefit increase"/>
@@ -971,6 +1946,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="from_point">
+    <xs:annotation>
+      <xs:documentation>Inclusive start of a half-open interval, used e.g. for 
input sequences.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Issue"/>
       <xs:enumeration value="Year"/>
@@ -979,6 +1957,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="to_point">
+    <xs:annotation>
+      <xs:documentation>Exclusive end of a half-open interval used e.g. for 
input sequences.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="Retirement"/>
       <xs:enumeration value="Year"/>
@@ -987,6 +1968,9 @@
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="report_column">
+    <xs:annotation>
+      <xs:documentation>Column on optional supplemental 
report.</xs:documentation>
+    </xs:annotation>
     <xs:restriction base="xs:token">
       <xs:enumeration value="[none]"/>
       <xs:enumeration value="AttainedAge"/>




reply via email to

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