anchor.diff:        TYPE(W2_SumData_Type)                              :: SumQTFData           !< Data storage for the full sum QTF method
   
            ! Force arrays
  -      REAL(SiKi)                                         :: MnDriftForce(:)      !< MnDrift force array.   Constant for all time.  First index is force component
  +      REAL(SiKi),    ALLOCATABLE                         :: MnDriftForce(:)      !< MnDrift force array.   Constant for all time.  First index is force component
         REAL(SiKi),    ALLOCATABLE                         :: NewmanAppForce(:,:)  !< NewmanApp force array.  Index 1: Time,    Index 2: force component
         REAL(SiKi),    ALLOCATABLE                         :: DiffQTFForce(:,:)    !< DiffQTF force array.    Index 1: Time,    Index 2: force component
         REAL(SiKi),    ALLOCATABLE                         :: SumQTFForce(:,:)     !< SumQTF force array.     Index 1: Time,    Index 2: force component
  
positive.code:          !! FIXME: remove this check and warning once the sparse matrix interpolation routines are implimented.
        TmpFlag = .FALSE.
        IF ( MnDriftData%DataIs3D ) THEN
           DO I=1,MnDriftData%Data3D%NumBodies
              IF ( MnDriftData%Data3D%DataIsSparse(I) .AND. MnDriftData%Data3D%LoadComponents(I) .AND. p%MnDriftDims(I) )    TmpFlag = .TRUE.
           ENDDO
        ELSE     ! must be 4D -- we checked that we had something at the start of this routine.
           DO I=1,MnDriftData%Data4D%NumBodies
              IF ( MnDriftData%Data4D%DataIsSparse(I) .AND. MnDriftData%Data4D%LoadComponents(I) .AND. p%MnDriftDims(I) )    TmpFlag = .TRUE.
           ENDDO
        ENDIF
        IF (TmpFlag) THEN
  
negative.code:          ! Interpolation routine indices and value to search for, and smaller array to pass
        INTEGER(IntKi)                                     :: LastIndex3(3)        !< Last used index for searching in the interpolation algorithms
        INTEGER(IntKi)                                     :: LastIndex4(4)        !< Last used index for searching in the interpolation algorithms
        REAL(SiKi)                                         :: RotateZMatrixT(2,2)  !< The transpose of rotation in matrix form for rotation about z (from global to local)
        REAL(SiKi)                                         :: Coord3(3)            !< The (omega1,beta1,beta2) coordinate we want in the 3D dataset
        REAL(SiKi)                                         :: Coord4(4)            !< The (omega1,omega2,beta1,beta2) coordinate we want in the 4D dataset
        COMPLEX(SiKi),ALLOCATABLE                          :: TmpData3D(:,:,:)     !< Temporary 3D array we put the 3D data into (minus the load component indice)
  