anchor.diff:    endif
   
     call myzfft1d_slowindex_mpi(in,tempout,pf(1),ctrank,ctset,dim1*howmany)
  -  call twiddlemult_mpi(tempout,outtemp,dim1,depth,newproclist,pf(1),ctrank,howmany)
  +  call twiddlemult_mpi(tempout,outtemp,dim1,depth,newrank,newproclist,pf(1),ctrank,howmany)
     if (depth.eq.1) then
        call myzfft1d(outtemp,outtrans,dim1,howmany)
     else
  
positive.code: 
  
  
  subroutine twiddlemult_mpi(in,out,dim1,numfactored,factorlist,localnumprocs,ctrank,howmany)
    use fileptrmod
    use ct_mpimod  !!TEMP
    implicit none
    integer, intent(in) :: dim1,howmany,localnumprocs,numfactored,ctrank,factorlist(numfactored)
    complex*16, intent(in) :: in(dim1,howmany)
    complex*16, intent(out) :: out(dim1,howmany)
    complex*16 :: twiddle1(dim1,numfactored),tt1(dim1)
    integer :: ii
  
    if (localnumprocs.ne.nprocs.or.numfactored.ne.1.or.ctrank.ne.myrank) then
       write(mpifileptr,*) "ACK, twiddlemult_mpi not done",localnumprocs,nprocs,numfactored,&
            ctrank,myrank; call mpistop()
    endif
    call gettwiddlesmall(twiddle1(:,:),dim1*numfactored,localnumprocs)
  
    tt1(:)=twiddle1(:,1)**(ctrank-1)   !!! ???? crux
  
    do ii=1,howmany
       out(:,ii) = in(:,ii) * tt1(:)
  
negative.code:      call cooleytukey_outofplaceinput_mpi(intranspose,temptrans,dim1,newpf,newproclist,depth,newrank,howmany)
    endif
  
    call twiddlemult_mpi(temptrans,outtrans,dim1,depth,newrank,newproclist,pf(1),ctrank,howmany)
    call myzfft1d_slowindex_mpi(outtrans,out,pf(1),ctrank,ctset,dim1*howmany)
  
  end subroutine cooleytukey_outofplaceinput_mpi
  