Index: trunk/ppTranslate/src/ppMopsWrite.c
===================================================================
--- trunk/ppTranslate/src/ppMopsWrite.c	(revision 28212)
+++ trunk/ppTranslate/src/ppMopsWrite.c	(revision 28243)
@@ -46,8 +46,25 @@
         ppMopsDetections *det = detections->data[i]; // Detections for extension
         psTrace("ppMops.write", 1, "Writing extension %d to %s", i, args->output);
-        if (!psFitsWriteTableAllColumns(fits, det->header, det->table, NULL)) {
-            psError(psErrorCodeLast(), false, "Unable to write extension %d", i);
+        psString hdrName = NULL, psfName = NULL, deteffName = NULL;
+        psStringAppend(&hdrName, "%s.hdr", det->component);
+        psStringAppend(&psfName, "%s.psf", det->component);
+        psStringAppend(&deteffName, "%s.deteff", det->component);
+
+        if (!psFitsWriteBlank(fits, det->header, hdrName)) {
+            psError(psErrorCodeLast(), false, "Unable to write header %d", i);
             return false;
         }
+        if (!psFitsWriteTableAllColumns(fits, det->psfHeader, det->table, psfName)) {
+            psError(psErrorCodeLast(), false, "Unable to write table %d", i);
+            return false;
+        }
+        if (det->deteffHeader && det->deteffTable &&
+            !psFitsWriteTableAllColumns(fits, det->deteffHeader, det->deteffTable, deteffName)) {
+            psError(psErrorCodeLast(), false, "Unable to write detection efficiency %d", i);
+            return false;
+        }
+        psFree(hdrName);
+        psFree(psfName);
+        psFree(deteffName);
     }
     psFitsClose(fits);
