diff --git a/src/field_descriptor.cpp b/src/field_descriptor.cpp
index 59550a6dd7b16be0085c4eb1fa668e4a6d4ebde1..d6cd7c515ef02772cb35c4d520d364f0c21db244 100644
--- a/src/field_descriptor.cpp
+++ b/src/field_descriptor.cpp
@@ -438,6 +438,31 @@ int field_descriptor::interleave(
     return EXIT_SUCCESS;
 }
 
+int field_descriptor::switch_endianness(
+        float *a)
+{
+    for (int i = 0; i < this->local_size; i++)
+    {
+        *a = btle(*a);
+        a++;
+    }
+    return EXIT_SUCCESS;
+}
+
+int field_descriptor::switch_endianness(
+        fftwf_complex *b)
+{
+    float *a = (float*)b;
+    for (int i = 0; i < this->local_size; i++)
+    {
+        *a = btle(*a);
+        a++;
+        *a = btle(*a);
+        a++;
+    }
+    return EXIT_SUCCESS;
+}
+
 field_descriptor* field_descriptor::get_transpose()
 {
     int n[this->ndims];
diff --git a/src/field_descriptor.hpp b/src/field_descriptor.hpp
index 29b8c292488c87073cf20c6d7ca8ba95d8acc838..a2510841a9f24e5ce1ded568b597074148b0a99a 100644
--- a/src/field_descriptor.hpp
+++ b/src/field_descriptor.hpp
@@ -84,6 +84,11 @@ class field_descriptor
         int interleave(
                 fftwf_complex *input,
                 int dim);
+
+        int switch_endianness(
+                float *a);
+        int switch_endianness(
+                fftwf_complex *a);
 };
 
 
diff --git a/src/p3DFFT_to_iR.cpp b/src/p3DFFT_to_iR.cpp
index fe15f0079a01881dffe8678e02d7291111117494..fd2960f7dd92546127ef6f1f1a0c168c7b341fde 100644
--- a/src/p3DFFT_to_iR.cpp
+++ b/src/p3DFFT_to_iR.cpp
@@ -130,6 +130,8 @@ int p3DFFT_to_iR::read(
         this->f0c->read(
                 ifile[i],
                 (void*)(this->c3 + i*this->f3c->local_size));
+        this->f0c->switch_endianness(
+                (this->c3 + i*this->f3c->local_size));
         DEBUG_MSG("p3DFFT_to_iR::read "
                   "this->f0c->transpose(...);\n");
         this->f0c->transpose(
diff --git a/test3.ipynb b/test3.ipynb
index 1cacdb0eec355b0e550a9b03f64cade04a18378c..a4beedc247e155d322c1378a7bde449abde7fabc 100644
--- a/test3.ipynb
+++ b/test3.ipynb
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:966c6344a3d90cdf5a7423c96eebbfd82f41bd0e6556fcce769383cb4e93116c"
+  "signature": "sha256:48849ce7df2009ce7253f1b242366c1e998f76ecec705fb62d3af98ecbe8bbc0"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
@@ -57,22 +57,14 @@
       "Kdata0 = generate_data_3D(n, p = 2).astype(np.complex64)\n",
       "Kdata1 = generate_data_3D(n, p = 2).astype(np.complex64)\n",
       "Kdata2 = generate_data_3D(n, p = 2).astype(np.complex64)\n",
-      "Kdata0.T.copy().astype('<c8').tofile(\"Kdata0\")\n",
-      "Kdata1.T.copy().astype('<c8').tofile(\"Kdata1\")\n",
-      "Kdata2.T.copy().astype('<c8').tofile(\"Kdata2\")"
+      "Kdata0.T.copy().astype('>c8').tofile(\"Kdata0\")\n",
+      "Kdata1.T.copy().astype('>c8').tofile(\"Kdata1\")\n",
+      "Kdata2.T.copy().astype('>c8').tofile(\"Kdata2\")"
      ],
      "language": "python",
      "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stderr",
-       "text": [
-        "-c:15: RuntimeWarning: divide by zero encountered in true_divide\n"
-       ]
-      }
-     ],
-     "prompt_number": 2
+     "outputs": [],
+     "prompt_number": 7
     },
     {
      "cell_type": "code",
@@ -155,7 +147,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 3
+     "prompt_number": 8
     },
     {
      "cell_type": "code",
@@ -208,7 +200,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 5
+     "prompt_number": 15
     },
     {
      "cell_type": "code",
@@ -249,11 +241,11 @@
        "text": [
         "0.0\n",
         "distance is small\n",
-        "14.4104\n"
+        "15.2714\n"
        ]
       }
      ],
-     "prompt_number": 6
+     "prompt_number": 16
     },
     {
      "cell_type": "code",