1. Home
  2. Knowledge Base
  3. Implementers
  4. Known Application Issues
  5. Issue: Incorrect Non-Taxable Benefit Amount for J&S Forms using the Simplified Method

Issue: Incorrect Non-Taxable Benefit Amount for J&S Forms using the Simplified Method

Optional Form COBOL may resolve the incorrect Spouse or Beneficiary Age when applying the Simplified Method.

The Simplified Non-Taxable Amount calculation divisor for Joint & Survivor Optional Forms is based on the combined Member and Survivor Ages:

Combine Member and Survivor AgesExpected Monthly Payments
110 and under410
111 to 120360
121 to 130310
131 to 140260
141 and over210
J&S Form Simplified Non-Taxable Divisor

Issue

The Optional Form module (PAPUCSTM) resolves the Spouse or Beneficiary Age using the Date Math module (PAPUDTGN), but does not set the Action Type to be used by the Date Math module before calling it:

      ******************************************************************
      *                                                                *
       CD324-GET-PEN-BENEF-DATA SECTION.
       CD324.
      *                                                                *
      *    GET PENSION BENEFICIARY DATA FOR THE PLAN FROM LINKAGE      *
      ******************************************************************
           IF  TRACE-THIS-PGM
               STRING '--->GET-PEN-BENEF-DATA '
                   DELIMITED BY SIZE
                   INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
               CALL 'PAPUAUDT' USING COPY PACUSING.

               STRING 'SPOUSE-DOB = '
                       SPOUSE-DOB OF PERSONAL-DATA
                   DELIMITED BY SIZE
                   INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
               CALL 'PAPUAUDT' USING COPY PACUSING.

               STRING 'BENEF-DOB = '
                       BENEF-DOB OF PERSONAL-DATA
                   DELIMITED BY SIZE
                   INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
               CALL 'PAPUAUDT' USING COPY PACUSING.

               MOVE BFT-AUTO-AMT TO W-DISPLAY-AMT
               STRING 'BFT-AUTO-AMT = '
                       W-DISPLAY-AMT
                   DELIMITED BY SIZE
                   INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
               CALL 'PAPUAUDT' USING COPY PACUSING.
           END-IF

           MOVE 0 TO W-BENEF-COUNT

           IF  SPOUSE-DOB OF PERSONAL-DATA > '0000-00-00'
           AND (   (ALLOW-CONTINGENTS AND BFT-AUTO-AMT > 0)
                OR (OPTFORM-CALC-RSLTS (RSLT-SUB) = 'SPJS')
                OR (NOT ALLOW-CONTINGENTS)   )
      *     AND SPOUSE-ALIVE-AT-BCD
               ADD 1 TO W-BENEF-COUNT
               MOVE SPOUSE-DOB OF PERSONAL-DATA TO IN-DATE
               MOVE BEN-CMDT-DATE OF CALC-DATA TO IN-DATE-2
      ******************************************************************
      * 04/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00254         PSPA Tech (DT) Modified Code                  *
      *                  Fix Issue with resolution of Spouse/Bene      *
      *                  age during Simplified Method for J&S Options. *
      *                                                                *
               SET ACT-TYPE-SUB-DATES TO TRUE
      * 04/05/2023 MWT - End Change                                    *
      ******************************************************************
               CALL 'PAPUDTGN'    USING COPY PACUSING.
               MOVE OUT-YR OF OUT-DATE TO W-BENEF-AGE
                                          W-MIN-AGE
                                          W-MAX-AGE
               IF TRACE-THIS-PGM
                   STRING 'ADDING SPOUSE AGE =' W-BENEF-AGE
                           DELIMITED BY SIZE
                           INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
                   CALL 'PAPUAUDT'   USING COPY PACUSING.
               END-IF
           END-IF

           IF  BENEF-DOB OF PERSONAL-DATA > '0000-00-00'
           AND ALLOW-CONTINGENTS
           AND NOT FORM-CODE OF OPTFORM-CALC-RSLTS (RSLT-SUB) = 'SPJS'
      *    AND BENEF-ALIVE-AT-BCD
               ADD 1 TO W-BENEF-COUNT
               MOVE BENEF-DOB OF PERSONAL-DATA TO IN-DATE
               MOVE BEN-CMDT-DATE OF CALC-DATA TO IN-DATE-2
      ******************************************************************
      * 04/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00254         PSPA Tech (DT) Modified Code                  *
      *                  Fix Issue with resolution of Spouse/Bene      *
      *                  age during Simplified Method for J&S Options. *
      *                                                                *
               SET ACT-TYPE-SUB-DATES TO TRUE
      * 04/05/2023 MWT - End Change                                    *
      ******************************************************************
               CALL 'PAPUDTGN'    USING COPY PACUSING.
               IF TRACE-THIS-PGM
                    STRING 'ADDING BENEF AGE =' OUT-YR
                           DELIMITED BY SIZE
                           INTO PA-AUDIT-TXT OF AUDIT-INFO OF UAUDT
                   CALL 'PAPUAUDT'   USING COPY PACUSING.
               END-IF
               IF W-BENEF-COUNT = 1
                   MOVE OUT-YR OF OUT-DATE TO W-BENEF-AGE
                                              W-MIN-AGE
                                              W-MAX-AGE
               ELSE
                   EVALUATE TRUE
                       WHEN OUT-YR > W-MAX-AGE
                           MOVE OUT-YR TO W-MAX-AGE
                       WHEN OUT-YR < W-MIN-AGE
                           MOVE OUT-YR TO W-MIN-AGE
                                          W-BENEF-AGE
                   END-EVALUATE
               END-IF
           END-IF
COBOL – PAPCOPTF.cbl

Use Case

The system can be configured to calculate the portion of a pension benefit annuity that is partially funded by member Post-Tax contributions and is Non-Taxable if applicable.

Replicate

The following steps can be used to replicate the issue.

Set up a primary Employee Account and enter the Function Result Name on the Plan Aliases page:

Set up an Optional Form set with Simplified Calculation selected in the Non-Taxable Amount Calculation section:

Run a calculation for a member with Post-Tax contributions in the specified Employee Account. Review the Optional Form Application Trace output (see below) and/or the Optional Form results.

These intermediate results are not stored with the results of the Calculation, so they can only be viewed in the Optional Form Application Trace output:

  • Investment In Contract (Total Post-Tax Contributions)
  • Combined Member and Survivor Ages, or
  • Expected Number of Monthly Payments (Divisor)

This excerpt from the Calculation Optional Form Application Trace shows that the most recently used Date Math Action is used to resolve Spouse/Beneficiary Age. While it appears to resolve the age correctly and return the result 69.876712, the process goes on to use the value 47. This is because the Action used to call the Date Math module does not populate the variable used to move forward.

==============>OPTFORMST_OPT_F                                                                      
OPTIONAL FORMS PROCESSING BEGINING                                                                  
OPTIONAL FORM INITIAL RUN                                                                           
FR ALIAS T_BF901_F  =         975.440000                                                            
BENEFIT AMOUNT USED =         975.440000                                                            
AUTO BENEFIT CALCULATED =           0.000000, NEW BENEFIT AMOUNT =         975.440000               
DU ALIAS T_EABC_DU  =          69.734247                                                            
DB ALIAS BENEF_DOB  =          69.734247                                                            
DB ALIAS BENCOM_DT  =          69.734247                                                            
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DATE DURATION-IN 2018-07-01 AND 1948-09-18 /OUT          69.783562                                  
DU ALIAS T_BABC_DU  =          69.783562                                                            
DU ALIAS T_BABC_DU2 =          69.780000                                                            
DU ALIAS T_BABC_DU2 =          69.780000                                                            
DU ALIAS T_BABC_DU3 =          70.000000                                                            
DU ALIAS T_BABC_DU3 =          70.000000                                                            
DU ALIAS T_BABC_DU4 =         837.000000                                                            
DU ALIAS T_BABC_DU4 =         837.000000                                                            
DU ALIAS T_BABC_DU5 =           0.783562                                                            
DU ALIAS T_BABC_DU5 =           0.783562                                                            
DU ALIAS T_BABC_DU6 =           9.000000                                                            
DU ALIAS T_BABC_DU6 =           9.000000                                                            
DU ALIAS T_BABC_DU7 =         286.000000                                                            
DU ALIAS T_BABC_DU7 =         286.000000                                                            
NON-ACTUARIAL FACTOR BEING RETRIEVED FORM CODE = JS                                                 
TL ALIAS T_TJS3_TL  =          69.783562                                                            
DU ALIAS T_EABC_DU2 =          69.730000                                                            
DB ALIAS BIRTH_DT   =          69.730000                                                            
DB ALIAS BENCOM_DT  =          69.730000                                                            
DU ALIAS T_BABC_DU2 =          69.780000                                                            
DB ALIAS BENEF_DOB  =          69.780000                                                            
DB ALIAS BENCOM_DT  =          69.780000                                                            
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DB ALIAS BENEF_DOB  = 1948-09-18                                                                    
DU ALIAS T_BABC_DU2 =          69.780000                                                            
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BIRTH_DT   = 1948-10-06                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BENCOM_DT  = 2018-07-01                                                                    
DB ALIAS BIRTH_DT   = 1948-10-06                                                                    
DB ALIAS BIRTH_DT   = 1948-10-06                                                                    
DU ALIAS T_EABC_DU2 =          69.730000                                                            
DU ALIAS T_EABC_DU2 =          69.730000                                                            
DU ALIAS T_BABC_DU2 =          69.780000                                                            
DU ALIAS T_BABC_DU2 =           0.949000                                                            
FACTOR RETURNED AS           0.949000                                                               
PMT-AMT1 =         925.692560 (        975.440000 *           0.949000)                             
00000925690000
PMT-AMT2 =         308.254770 (        925.690000 *          33.300000/100)                         
TAX-USER-CODE = S RSLT-SUB = 000000001                                                              
GUARANTEED-PAYMENT = 000000000                                                                      
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                                                    
SET-SIMPLIFIED-NONTAX SECTION                                                                       
BEN-CMDT-DATE  = 2018-07-01                                                                         
BFT-EE-AGE  =          69.734247 BFT-YRS-CERT =           0.000000                                  
RETIREE DT-OF-DEATH =                                                                               
--->GET-PEN-BENEF-DATA                                                                              
SPOUSE-DOB = 1948-09-18                                                                             
BENEF-DOB = 1948-09-18                                                                              
BFT-AUTO-AMT = 000000000                                                                            
DATE DURATION-IN 1948-09-18 AND 2018-07-01 /OUT          69.876712                                  
ADDING SPOUSE AGE =0047                                                                             
MIN-AGE = 0047    MAX AGE = 0047                                                                    
W-SINGLE-AGE-TYPE = N                                                                               
GET-PLAN-DATA;  BENEFIT-PLAN = TRS    ASOFDATE = 2018-07-01                                         
GET-EE-COST-BASIS;  CONTRIB-NAME = T_EAREG_F  EMPLID = 060187                                       
FR ALIAS T_BESAN_F  = N                                                                             
FR ALIAS T_BEVAN_F  = N                                                                             
FR ALIAS T_BERAN_F  = N                                                                             
CONTRIBUTION ACCT (T_EAREG_F ) FOUND FOR PLAN (TRS   )                                              
W-NONTAX-BFT  =          21.994444 =        7918.000000 /         360.000000
Optional Form Application Trace Output

Workaround

There is no easy workaround for this Spouse/Beneficiary Age problem.

The Non-Taxable portion could be set up by creating a view supporting a Database Alias that returns the Investment in Contract, and then a Benefit Formula could be set up for each optional form that resolves the Non-Taxable portion of the benefit. But, this approach would return the result outside of the Optional Forms and not be integrated with setting up the Payment using the delivered process.

There is no override provided for the following Optional Form Function Result values:

  • Investment In Contract (Total Post-Tax Contributions)
  • Combined Member and Survivor Ages, or
  • Expected Number of Monthly Payments (Divisor)

Solution

This issue can be resolved with a COBOL programming change to the Optional Form module (PAPCOPTF) that sets the appropriate Action Type before calling the Date Math module (PAPUDTGN). See the highlighted proposed solution included in the PAPCOPTF COBOL Code above.

Resolution

After the proposed fix is installed and compiled, the Spouse/Beneficiary Age and Non-Taxable Amount are correctly resolved.

The Application Trace output shows that the correct Spouse/Beneficiary Age (69) is resolved after the changes are implemented:

--->GET-PEN-BENEF-DATA                                                                              
SPOUSE-DOB = 1948-09-18                                                                             
BENEF-DOB = 1948-09-18                                                                              
BFT-AUTO-AMT = 000000000                                                                            
DATE SUBTRACTION-IN 1948-09-18 AND 2018-07-01 /OUT 0069-09-14                                       
ADDING SPOUSE AGE =0069                                                                             
MIN-AGE = 0069    MAX AGE = 0069                                                                    
W-SINGLE-AGE-TYPE = N                                                                               
GET-PLAN-DATA;  BENEFIT-PLAN = TRS    ASOFDATE = 2018-07-01                                         
GET-EE-COST-BASIS;  CONTRIB-NAME = T_EAREG_F  EMPLID = 060187                                       
FR ALIAS T_BESAN_F  = N                                                                             
FR ALIAS T_BEVAN_F  = N                                                                             
FR ALIAS T_BERAN_F  = N                                                                             
CONTRIBUTION ACCT (T_EAREG_F ) FOUND FOR PLAN (TRS   )                                              
W-NONTAX-BFT  =          30.453846 =        7918.000000 /         260.000000
Optional Form Application Trace Output

Analysis

This issue has not been reported to Oracle.

Additional Resources

To learn more about PeopleSoft Pension Administration’s implementation of the Simplified Method for computing the Non-Taxable portion of a benefit, see PeopleBooks.

To learn more about the IRS rules pertaining to the Simplified Method, see IRS Publication 525.

Was this article helpful?

Related Articles

Leave a Reply