diff --git a/src/trapping/clffft.cpp b/src/trapping/clffft.cpp
index d41fb77dba055f42b5f2658c33baba50c612d78f..d841cdb67de24642bfd5ef3ea6e5a45836da9764 100644
--- a/src/trapping/clffft.cpp
+++ b/src/trapping/clffft.cpp
@@ -251,6 +251,12 @@ void lffft(string data_file, string output_path) {
 	  const int nlmmt = nlmm + nlmm;
 	  ws = new complex<double>[nlmmt]();
 	  if (lm > le) wsl = new complex<double>[nlmmt]();
+	  // FORTRAN writes two output formatted files without opening them
+	  // explicitly. It is assumed thay can be opened here.
+	  string out66_name = output_path + "/c_out66.txt";
+	  string out67_name = output_path + "/c_out67.txt";
+	  FILE *output66 = fopen(out66_name.c_str(), "w");
+	  FILE *output67 = fopen(out67_name.c_str(), "w");
 	  for (int iz475 = 0; iz475 < nzv; iz475++) {
 	    for (int iy475 = 0; iy475 < nyv; iy475++) {
 	      for (int ix475 = 0; ix475 < nxv; ix475++) {
@@ -299,6 +305,18 @@ void lffft(string data_file, string output_path) {
 		    ffrf(zpv, ac, ws, fffe, fffs, cil, ccr);
 		    if (jss == 1) {
 		      // Writes to 66
+		      fprintf(
+			      output66, " %18.16lE%18.16lE%18.16lE\n",
+			      fffe[0], fffs[0], fffe[0] - fffs[0]
+			      );
+		      fprintf(
+			      output66, " %18.16lE%18.16lE%18.16lE\n",
+			      fffe[1], fffs[1], fffe[1] - fffs[1]
+			      );
+		      fprintf(
+			      output66, " %18.16lE%18.16lE%18.16lE\n",
+			      fffe[2], fffs[2], fffe[2] - fffs[2]
+			      );
 		    } else { // label 450
 		      for (int i = 0; i < 3; i++) {
 			double value = fffe[i] - fffs[i];
@@ -306,6 +324,11 @@ void lffft(string data_file, string output_path) {
 		      }
 		      if (jtw == 1) {
 			// Writes to 66
+			fprintf(
+				output66, " %5d%4d%4d%15.4lE%15.4lE%15.4lE\n",
+				ix475 + 1, iy475 + 1, iz475 + 1,
+				fffe[0] - fffs[0], fffe[1] - fffs[1], fffe[2] - fffs[2]
+				);
 		      }
 		    }
 		    if (jft < 0) goto475 = true;
@@ -319,6 +342,18 @@ void lffft(string data_file, string output_path) {
 		    ffrt(ac, ws, ffte, ffts, cil);
 		    if (jss == 1) {
 		      // Writes to 67
+		      fprintf(
+			      output67, " %18.16lE%18.16lE%18.16lE\n",
+			      ffte[0], ffts[0], ffte[0] - ffts[0]
+			      );
+		      fprintf(
+			      output67, " %18.16lE%18.16lE%18.16lE\n",
+			      ffte[1], ffts[1], ffte[1] - ffts[1]
+			      );
+		      fprintf(
+			      output67, " %18.16lE%18.16lE%18.16lE\n",
+			      ffte[2], ffts[2], ffte[2] - ffts[2]
+			      );
 		    } else { // label 470
 		      for (int i = 0; i < 3; i++) {
 			double value = ffte[i] - ffts[i];
@@ -326,6 +361,11 @@ void lffft(string data_file, string output_path) {
 		      }
 		      if (jtw == 1) {
 			// Writes to 67
+			fprintf(
+				output67, " %5d%4d%4d%15.4lE%15.4lE%15.4lE\n",
+				ix475 + 1, iy475 + 1, iz475 + 1,
+				ffte[0] - ffts[0], ffte[1] - ffts[1], ffte[2] - ffts[2]
+				);
 		      }
 		    }
 		    delete[] ffte;
@@ -339,6 +379,8 @@ void lffft(string data_file, string output_path) {
 	    if (jft <= 0) tlfff.close();
 	    if (jft >= 0) tlfft.close();
 	  }
+	  fclose(output66);
+	  fclose(output67);
 	}
       }
       binary_input.close();