diff --git a/src/sphere/sphere.cpp b/src/sphere/sphere.cpp
index 448002d20c1dde9881768d52e5a63d3436f20688..2e179fc59ecb5aaff9e23f68a6a2494757a632e8 100644
--- a/src/sphere/sphere.cpp
+++ b/src/sphere/sphere.cpp
@@ -294,10 +294,17 @@ void sphere(string config_file, string data_file, string output_path) {
 	    ttms.write(reinterpret_cast<char *>(&vk), sizeof(double));
 	    ttms.write(reinterpret_cast<char *>(&exri), sizeof(double));
 	    for (int lmi = 0; lmi < gconf->l_max; lmi++) {
-	      complex<double> element1 = -1.0 / c1->rmi[0][lmi];
-	      complex<double> element2 = -1.0 / c1->rei[0][lmi];
-	      ttms.write(reinterpret_cast<char *>(&element1), sizeof(complex<double>));
-	      ttms.write(reinterpret_cast<char *>(&element2), sizeof(complex<double>));
+	      complex<double> element1 = -1.0 / c1->rmi[lmi][0];
+	      complex<double> element2 = -1.0 / c1->rei[lmi][0];
+	      double vreal, vimag;
+	      vreal = element1.real();
+	      vimag = element1.imag();
+	      ttms.write(reinterpret_cast<char *>(&vreal), sizeof(double));
+	      ttms.write(reinterpret_cast<char *>(&vimag), sizeof(double));
+	      vreal = element2.real();
+	      vimag = element2.imag();
+	      ttms.write(reinterpret_cast<char *>(&vreal), sizeof(double));
+	      ttms.write(reinterpret_cast<char *>(&vimag), sizeof(double));
 	    }
 	    ttms.write(reinterpret_cast<char *>(&(sconf->radii_of_spheres[0])), sizeof(double));
 	    ttms.close();