1. Home
  2. Knowledge Base
  3. Implementers
  4. Known Application Issues
  5. Issue: Negative Interest Rates Not Supported

Issue: Negative Interest Rates Not Supported

Employee Accounts that receive periodic adjustments for investment returns may experience negative rates of return. The Employee Account can be configured with an Interest Method supported by a Table Lookup Alias for the Interest Rate (Investment Return).

However, negative Table Lookup Alias results and negative Interest Rates are not supported. The negative rate from the Lookup Table is treated as a positive value, and a positive interest credit is computed.

Issue

The Table Lookup Alias module (PAPUALTL) resolves the negative interest rate in the table as a positive value. Even if the Table Lookup Alias issue is resolved, the Cash Balance/Employee Accounts module (PAPCABAL) and Cash Balance/Employee Accounts User Exit module (PACXABAL) are also not properly set up to handle a negative interest rate.

The cause of the issue is that several variables defined in the COBOL programs are not properly set up to be signed values.

ModuleVariable
PAPUALTL.cblTL-2ND-COL-DEC-VAL
PAPUALTL.cblTL-3RD-COL-DEC-VAL
PAPCABAL.cblW-INT-RATE
PACXABAL.cblUSER-INTEREST-RAT
Variables that should be signed fields

Use Case

The system can be configured to compute Cash Balance and Employe Account interest, but periods with negative interest rates are not correctly computed. Negative interest rates may be applicable when the interest rate is derived based on investment returns.

Replicate

The following steps can be used to replicate the issue.

Include a negative interest rate in your interest rate table:

Set up a Table Lookup Alias to retrieve the investment return interest rate:

Configure an Interest Method that uses the Table Lookup Alias:

Finally, set up an Employee Account definition and Function Result that uses the Interest Method:

Run the Periodic Process for a member with the specified Employee Account.

Review the Employee Accounts Application Trace to see that the Table Lookup Alias resolved incorrectly to a positive interest rate.

COMPUTING INTEREST USING (T_ACCTV_IM)                                                               
SETTING FLAGS FOR FULL PERIOD                                                                       
FULL PERIOD INTEREST - FRACTION IS (          1.000000)                                             
PROGRAM GENERATED LOOKUP VALUE 1 = 2020-06-30                                                       
TL ALIAS T_VOL_TL   =         4.090000                                                            
USING TIME AWARE TABLE LOOKUP - LOOKUP VALUE (-         4.090000FOR INTEREST RATE (-         0.04090
PROGRAM GENERATED LOOKUP VALUE 1 = 2020-06-30                                                       
TL ALIAS T_VOLDT_TL = 2019-06-30                                                                    
[26849] USING TABLE LOOKUP (T_VOLDT_TL) FOR BALANCE AS OF DATE (2019-06-30)                         
[26849] RETRIEVE BALANCE - PRE-TAX (      16677.950000)                                             
COMPUTING SIMPLE INTEREST (        682.120000)                                                      
INTEREST ADJUSTED FOR PAYBCD (        682.120000) 
Employee Accounts Application Trace Output

Confirm the Employee Account results to see that a positive interest credit was added to the account incorrectly.

Workaround

There is no workaround to enable negative interest rates or investment returns.

Solution

This issue can be resolved with COBOL programming changes to the Table Lookup Alias module (PAPUALTL), the Cash Balance/Employee Accounts module (PAPCABAL), and Cash Balance/Employee Accounts User Exit module (PACXABAL)module. Certain variables need to be updated to accommodate a signed value.

       01  W-TABLES-FOR-LOOKUP.
           03  W-MAX-TSFL-COL-CNT             PIC 9(4)  COMP VALUE 1000.
           03  W-MAX-TSFL-TBL-CNT             PIC 9(4)  COMP VALUE 100.
           03  W-TFL-TBL-CNT                  PIC 9(4)  COMP VALUE 0.
           03  W-HLD-ROW-CNT                  PIC 9(4)  COMP.
           03  W-LOOKUP-TABLES                OCCURS 100 TIMES
                                              INDEXED BY TSFLIDX.
             05  W-TL-TBL-NAME                PIC X(18).
             05  W-TL-TBL-ROW-CNT             PIC 9(4) COMP.
             05  W-TL-TBL-YCYCL-NUM           PIC 9(4) COMP.
             05  W-TL-TBL-VAL-COLS            OCCURS 1000 TIMES
                                              INDEXED BY COLIDX
                                                         COLIDXLO
                                                         COLIDXHI.
NOCLN          07  TL-1ST-COL.
NOCLN              09  TL-1ST-COL-DEC-VAL     PIC 9(9)V9(6).
NOCLN              09  TL-1ST-COL-DATE-VAL    PIC X(10).
NOCLN          07  TL-2ND-COL.
      ******************************************************************
      * 01/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00247         PSPA Tech (DT) Modified Code                  *
      *                  Support Negative Table Lookup Result and      *
      *                  Negative Account Interest Rate.               *
      *                                                                *
NOCLN *             09  TL-2ND-COL-DEC-VAL     PIC 9(9)V9(6).
NOCLN              09  TL-2ND-COL-DEC-VAL     PIC S9(9)V9(6).
      * 01/05/2023 MWT - Mark Tomsheck - End Change                    *
      ******************************************************************
NOCLN              09  TL-2ND-COL-DATE-VAL    PIC X(10).
NOCLN              09  TL-2ND-COL-CHAR-VAL    PIC X(01).
NOCLN          07  TL-3RD-COL.
      ******************************************************************
      * 01/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00247         PSPA Tech (DT) Modified Code                  *
      *                  Support Negative Table Lookup Result and      *
      *                  Negative Account Interest Rate.               *
      *                                                                *
NOCLN *             09  TL-3RD-COL-DEC-VAL     PIC 9(9)V9(6).
NOCLN              09  TL-3RD-COL-DEC-VAL     PIC S9(9)V9(6).
      * 01/05/2023 MWT - Mark Tomsheck - End Change                    *
      ******************************************************************
NOCLN              09  TL-3RD-COL-DATE-VAL    PIC X(10).
NOCLN              09  TL-3RD-COL-CHAR-VAL    PIC X(01).
COBOL – PAPUALTL.cbl
       01  W-MISC-AREA.
           02  W-ORIG-PROCESS-MODE     PIC X(1).
               88  W-ORIG-CALC                    VALUE 'N'.
           02  W-PRIOR-ADJUSTMENT-FLAG         PIC X(1) VALUE 'N'.
               88  W-PRIOR-ADJUST-FOUND        VALUE 'Y'.
               88  W-PRIOR-ADJUST-NOT-FOUND    VALUE 'N'.
           02  W-HISTORY-END-DATE      PIC X(10).
           02  W-LAST-BAL-DATE         PIC X(10).
           02  W-LAST-BAL-ALIGN-DATE   PIC X(10).
           02  W-NEXT-BAL-ALIGN-DATE   PIC X(10).
           02  W-NEXT-AS-OF-DATE       PIC X(10).
           02  W-HOLD-AMOUNT           PIC S9(07)V9(06).
           02  W-HOLD-INTEREST         PIC S9(07)V9(10).
           02  W-HOLD-ADJUST           PIC S9(03)V9(10).
           02  W-INTEREST-NAME         PIC X(10).
           02  W-INT-FRAC              PIC 9(02)V9(06).
           02  W-PART-FRAC             PIC 9(02)V9(06).
           02  W-MAX-HISTORY           PIC 9(04).
      ******************************************************************
      * 01/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00247         PSPA Tech (DT) Modified Code                  *
      *                  Support Negative Table Lookup Result and      *
      *                  Negative Account Interest Rate.               *
      *                                                                *
      *     02  W-INT-RATE              PIC 9(02)V9(10).
           02  W-INT-RATE              PIC S9(02)V9(10).
      * 01/05/2023 MWT - Mark Tomsheck - End Change                    *
      ******************************************************************
           02  W-START-SUB             PIC 9(04) COMP.
           02  W-THRESHOLD             PIC 9(11) COMP.
           02  W-CREDIT-RATE1          PIC 9(03)V9(06).
           02  W-CREDIT-RATE2          PIC 9(03)V9(06).
COBOL – PAPCABAL.cbl
           05  USER-EXIT-PARAMETERS.
               10  USER-CODE-TYPE                     PIC X(02).
                   88  USER-CREDIT-TYPE               VALUE 'AA'.
                   88  USER-CREDIT-RATES              VALUE 'AB'.
                   88  USER-CR-THRESHOLD              VALUE 'AC'.
                   88  USER-CREDIT-MIN                VALUE 'AD'.
                   88  USER-CREDIT-MAX                VALUE 'AE'.
                   88  USER-PARTIAL-FLAGS             VALUE 'AF'.
                   88  USER-INTEREST-RATE             VALUE 'AG'.
               10  USER-PASSED-VALUES.
                   15  W-USER-EARNINGS                PIC S9(07)V9(06).
               10  USER-RETURNED-VALUES.
                   15  USER-RC                        PIC 9(02).
                       88  USER-RC-OK                 VALUE 0.
                   15  USER-CREDIT                    PIC S9(07)V9(06).
                   15  USER-CR-RAT1                   PIC 9(03)V9(06).
                   15  USER-CR-RAT2                   PIC 9(03)V9(06).
                   15  USER-CR-THRESHOLD-VAL          PIC 9(11) COMP.
                   15  USER-CREDIT-MIN-VAL            PIC S9(07)V9(06).
                   15  USER-CREDIT-MAX-VAL            PIC S9(07)V9(06).
                   15  USER-INTEREST-FLAG             PIC X(01).
                       88  USER-INTEREST-YES          VALUE 'Y'.
                       88  USER-INTEREST-NO           VALUE 'N'.
                   15  USER-INTEREST-TYPE             PIC X(01).
                       88  USER-INTEREST-SIMPLE       VALUE 'S'.
                       88  USER-INTEREST-COMPOUND     VALUE 'C'.
      ******************************************************************
      * 01/05/2023 MWT - Mark Tomsheck, PSPA Tech Inc.                 *
      * DT-00247         PSPA Tech (DT) Modified Code                  *
      *                  Support Negative Table Lookup Result and      *
      *                  Negative Account Interest Rate.               *
      *                                                                *
      *             15  USER-INTEREST-RAT              PIC 9(02)V9(06).
                   15  USER-INTEREST-RAT              PIC S9(02)V9(06).
      * 01/05/2023 MWT - Mark Tomsheck - End Change                    *
      ******************************************************************
COBOL – PACXABAL.cbl

Updating interest-related fields in Application Designer to support negative (signed) values may also be a good idea. These fields have been identified:

  • ACCUM_POST_TAX_INT
  • ACCUM_PRE_TAX_INT
  • BALANCE_INT_RATE
  • CREDIT_INT_RATE
  • INTEREST_RATE
  • POST_TAX_DED_INT
  • PRE_TAX_DED_INT

For example:

Resolution

After the proposed fix is installed and compiled, the Table Lookup Alias for the negative interest rate is correctly resolved, and the correct interest credit is computed when Employee Account is processed.

The Application Trace output shows that the correct interest rate is resolved by the Table Lookup Alias:

COMPUTING INTEREST USING (T_ACCTV_IM)                                                               
SETTING FLAGS FOR FULL PERIOD                                                                       
FULL PERIOD INTEREST - FRACTION IS (          1.000000)                                             
PROGRAM GENERATED LOOKUP VALUE 1 = 2020-06-30                                                       
TL ALIAS T_VOL_TL   = -         4.090000                                                            
USING TIME AWARE TABLE LOOKUP - LOOKUP VALUE (-         4.090000FOR INTEREST RATE (-         0.04090
PROGRAM GENERATED LOOKUP VALUE 1 = 2020-06-30                                                       
TL ALIAS T_VOLDT_TL = 2019-06-30                                                                    
[26849] USING TABLE LOOKUP (T_VOLDT_TL) FOR BALANCE AS OF DATE (2019-06-30)                         
[26849] RETRIEVE BALANCE - PRE-TAX (      16677.950000)                                             
COMPUTING SIMPLE INTEREST (-       682.120000)                                                      
INTEREST ADJUSTED FOR PAYBCD (-       682.120000) 
Employee Accounts Application Trace Output

Analysis

This issue has not been reported to Oracle.

Was this article helpful?

Related Articles

Leave a Reply