anchor.diff:         IADD = 0
          CONVER = .TRUE.
          DO 100 IROOT = 1, NROOT
  -         CALL SETVEC(VEC1,0.0D0,NVAR)
  -*
  -         CALL REWINO( LU2)
  +CNW      CALL SETVEC(VEC1,0.0D0,NVAR)
  +         call ga_zero(VEC3)
  +*   
  +CNW      CALL REWINO( LU2)
            DO 60 IVEC = 1, NVEC
  -           CALL FRMDSC(VEC2,NVAR,-1  ,LU2,IMZERO,IAMPACK)
  +CNW        CALL FRMDSC(VEC2,NVAR,-1  ,LU2,IMZERO,IAMPACK)
              FACTOR = AVEC((IROOT-1)*NVEC+IVEC)
  -           CALL VECSUM(VEC1,VEC1,VEC2,1.0D0,FACTOR,NVAR)
  +           call ga_add(FACTOR,VEC2(IVEC),1.0D0,VEC3(1),VEC3(1))
  +CNW        CALL VECSUM(VEC1,VEC1,VEC2,1.0D0,FACTOR,NVAR)
      60    CONTINUE
  -*
  +*        for Olson correction, avoid duplicate work
  +         call ga_copy(VEC3(1),VEC3(2))
  +   
            EIGAPR = EIG(ITER-1,IROOT)
  -         CALL REWINO( LU1)
  +CNW      CALL REWINO( LU1)
            DO 50 IVEC = 1, NVEC
  -           CALL FRMDSC(VEC2,NVAR,-1  ,LU1,IMZERO,IAMPACK)
  +CNW        CALL FRMDSC(VEC2,NVAR,-1  ,LU1,IMZERO,IAMPACK)
              FACTOR = -EIGAPR*AVEC((IROOT-1)*NVEC+ IVEC)
  -           CALL VECSUM(VEC1,VEC1,VEC2,1.0D0,FACTOR,NVAR)
  +           call ga_add(FACTOR,VEC2(IVEC),1.0D0,VEC3(1),VEC3(1))
  +CNW        CALL VECSUM(VEC1,VEC1,VEC2,1.0D0,FACTOR,NVAR)
      50    CONTINUE
              IF ( IPRT  .GE.600 ) THEN
                WRITE(6,*) '  ( HX - EX ) '
  -             CALL WRTMAT(VEC1,1,NVAR,1,NVAR)
  +             call ga_print(VEC3(1))
  +CNW          CALL WRTMAT(VEC1,1,NVAR,1,NVAR)
              END IF
   *  STRANGE PLACE TO TEST CONVERGENCE , BUT ....
  -         RNORM = SQRT( INPROD(VEC1,VEC1,NVAR) )
  +CNW      RNORM = SQRT( INPROD(VEC1,VEC1,NVAR) )
  +         RNORM = SQRT( ga_ddot(VEC3(1),VEC3(1)))
            RNRM(ITER-1,IROOT) = RNORM
            IF(RNORM.LT. TEST ) THEN
               RTCNV(IROOT) = .TRUE.
  
positive.code:        CALL REWINO( LU2 )
         DO 10 IVEC = 1,NINVEC
  C?       WRITE(6,*) ' Before FRMDSC, NVAR = ', NVAR
           CALL FRMDSC(VEC1,NVAR,-1  ,LU1,IMZERO,IAMPACK)
  *
  C?       WRITE(6,*) ' Testing: initial vector'
  C?       CALL WRTMAT(VEC1,1,NVAR,1,NVAR)
  *
           CALL MV7(VEC1,VEC2,0,0,0,0)
           CALL TODSC(VEC2,NVAR,-1  ,LU2)
  *        PROJECTED MATRIX
           CALL REWINO( LU1)
           DO 8 JVEC = 1, IVEC
             CALL FRMDSC(VEC1,NVAR,-1  ,LU1,IMZERO,IAMPACK)
             IJ = IVEC*(IVEC-1)/2 + JVEC
             APROJ(IJ) = INPROD(VEC1,VEC2,NVAR)
      8    CONTINUE
     10  CONTINUE
  *
  
negative.code: *          variational method
  *
         IMPLICIT DOUBLE PRECISION (A-H,O-Z)
         integer VEC1(2*NROOT),VEC2(2*NROOT),VEC3(2)
         REAL * 8   INPROD
         DIMENSION RNRM(MAXIT,NROOT),EIG(MAXIT,NROOT)
         DIMENSION APROJ(*),AVEC(*),WORK(*)
  