     int tid1 = tid + 1;
     int tid2 = ((gid == ht1) ? tid : tid + 2);
     int tid0 = ((gid == height) ? tid+2 : tid);
+    gidout = (gid - blockDim.x) & lastidx;
 
 	// Initialize temper.
 

	int shft_wr;
	int leftidx = height - tid/2 + ((tid/2 & 1) * base) + (tid & 1) - 2;
	int rightidx = height + tid/2 + ((tid/2 & 1) * base) + (tid & 1);


    //if (blockIdx.x > (gridDim.x-3)) printf("gid: %i, gidin: %i \n",gid,gidin);

    {
        temper[leftidx] = right[gid];
        temper[rightidx] = left[gid];
        gidout = (gid + blockDim.x) & lastidx;
    }
    else
    {
        gid += blockDim.x;
        temper[leftidx] = right[gid];
        temper[rightidx] = left[gid];
        gidout = (gid - blockDim.x) & lastidx;
    }

    __syncthreads();
