diff --git a/FFTlib/cr1fft.c b/FFTlib/cr1fft.c
index 1182f3c4477e5a56be1c415ba4078c850d67ea33..67b8f67839bb4098e83c6224ed5603383a9c1b40 100644
--- a/FFTlib/cr1fft.c
+++ b/FFTlib/cr1fft.c
@@ -113,8 +113,6 @@ void cr1fft(complex *cdata, REAL *rdata, int n, int sign)
         }
 
         Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX);
-		//This options is what we would like, but is depreciated in the future
-        //Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_REAL);
         if (! DftiErrorClass(Status, DFTI_NO_ERROR)) {
             dfti_status_print(Status);
             printf(" DftiSetValue FAIL\n");
@@ -133,9 +131,12 @@ void cr1fft(complex *cdata, REAL *rdata, int n, int sign)
         printf(" DftiComputeBackward FAIL\n");
     }
     rdata[0] = tmp[0];
-    for (i=1; i<n; i++) {
-        rdata[i] = -sign*tmp[n-i];
-    }
+	if (sign < 0) {
+    	for (i=1; i<n; i++) rdata[i] = -sign*tmp[n-i];
+	}
+	else {
+    	for (i=1; i<n; i++) rdata[i] = tmp[i];
+	}
 	free(tmp);
 #else
 	cr1_fft(cdata, rdata, n, sign);
diff --git a/FFTlib/crmfft.c b/FFTlib/crmfft.c
index cfc8febc173cc8ee21a0eb3f2046a3e8d4c7a350..a9d4d64ea3d9535cc937104f16222da65adf81e8 100644
--- a/FFTlib/crmfft.c
+++ b/FFTlib/crmfft.c
@@ -170,9 +170,12 @@ void crmfft(complex *cdata, REAL *rdata, int n1, int n2, int ldc, int ldr, int s
     for (j=0; j<n2; j++) {
     	Status = DftiComputeBackward(handle, (MKL_Complex8 *)&cdata[j*ldc], tmp);
     	rdata[j*ldr] = tmp[0];
-    	for (i=1; i<n1; i++) {
-        	rdata[j*ldr+i] = -sign*tmp[n1-i];
-    	}
+		if (sign < 0) {
+    		for (i=1; i<n1; i++) rdata[j*ldr+i] = -sign*tmp[n1-i];
+		}
+		else {
+    		for (i=1; i<n1; i++) rdata[j*ldr+i] = tmp[i];
+		}
 	}
     free(tmp);
     if(! DftiErrorClass(Status, DFTI_NO_ERROR)){
diff --git a/FFTlib/rc1fft.c b/FFTlib/rc1fft.c
index 6373d1776ad5711345111fc04161214aa3144b4c..fa7386d7936e35dbdcf2b0f08038b58e3e5be57f 100644
--- a/FFTlib/rc1fft.c
+++ b/FFTlib/rc1fft.c
@@ -115,6 +115,13 @@ void rc1fft(REAL *rdata, complex *cdata, int n, int sign)
 			dfti_status_print(Status);
 			printf(" DftiSetValue FAIL\n");
 		}
+/*
+		Status = DftiSetValue(handle, DFTI_FORWARD_DOMAIN, DFTI_REAL);
+		if(! DftiErrorClass(Status, DFTI_NO_ERROR)){
+			dfti_status_print(Status);
+			printf(" DftiSetValue FAIL\n");
+		}
+*/
 
 		Status = DftiSetValue(handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX);
 		if (! DftiErrorClass(Status, DFTI_NO_ERROR)) {
diff --git a/FFTlib/test/rc1test.c b/FFTlib/test/rc1test.c
index b5c4999c2fda78c2dd4308781969e6f110ac110a..8771a371dc526006dc44dc7cf64b057412c47a9b 100644
--- a/FFTlib/test/rc1test.c
+++ b/FFTlib/test/rc1test.c
@@ -24,14 +24,14 @@ int main () {
 
 	N = 16;
 	k = 5.0;
-	sign = 1;
-	isign = -1;
+	sign = -1;
+	isign = 1;
 	while (N <= Nmax) {
 
 		/* Initialize the data */
 
 		for (i=0;i<N;i++) {
-			c_data[i]   = (float)-0.1+0.5*(N/2-i);
+			c_data[i]   = (float)-0.1+0.5*(N/3-i)*sin(i*M_PI/N);
 //			c_data[i]   = 0.0;
 		}
 //		c_data[0]   = 1.0;