Index: trunk/ppTranslate/src/ppMops.h
===================================================================
--- trunk/ppTranslate/src/ppMops.h	(revision 28026)
+++ trunk/ppTranslate/src/ppMops.h	(revision 28027)
@@ -27,4 +27,31 @@
 } ppMopsArguments;
 
+#if 0
+TTYPE19 = 'PSF_CHISQ'          / label for field  19
+TFORM19 = '1E      '           / data format of field: 4-byte REAL
+TTYPE20 = 'CR_NSIGMA'          / label for field  20
+TFORM20 = '1E      '           / data format of field: 4-byte REAL
+TTYPE21 = 'EXT_NSIGMA'         / label for field  21
+TFORM21 = '1E      '           / data format of field: 4-byte REAL
+TTYPE22 = 'PSF_MAJOR'          / label for field  22
+TFORM22 = '1E      '           / data format of field: 4-byte REAL
+TTYPE23 = 'PSF_MINOR'          / label for field  23
+TFORM23 = '1E      '           / data format of field: 4-byte REAL
+TTYPE24 = 'PSF_THETA'          / label for field  24
+TFORM24 = '1E      '           / data format of field: 4-byte REAL
+TTYPE25 = 'PSF_QF  '           / label for field  25
+TFORM25 = '1E      '           / data format of field: 4-byte REAL
+TTYPE26 = 'PSF_NDOF'           / label for field  26
+TFORM26 = '1J      '           / data format of field: 4-byte INTEGER
+TTYPE27 = 'PSF_NPIX'           / label for field  27
+TFORM27 = '1J      '           / data format of field: 4-byte INTEGER
+TTYPE28 = 'MOMENTS_XX'         / label for field  28
+TFORM28 = '1E      '           / data format of field: 4-byte REAL
+TTYPE29 = 'MOMENTS_XY'         / label for field  29
+TFORM29 = '1E      '           / data format of field: 4-byte REAL
+TTYPE30 = 'MOMENTS_YY'         / label for field  30
+TFORM30 = '1E      '           / data format of field: 4-byte REAL
+#endif
+
 /// Parse arguments
 ppMopsArguments *ppMopsArgumentsParse(int argc, char *argv[]);
@@ -44,12 +71,20 @@
     psVector *raErr, *decErr;           // Error in sky coordinates
     psVector *mag, *magErr;             // Magnitude and associated error
-    psVector *extended;                 // Measure of extendedness
-    psVector *angle, *angleErr;         // Angle of trail and associated error
-    psVector *length, *lengthErr;       // Length of trail and associated error
+    psVector *chi2, *dof;               // Chi^2 from fitting, with associated degrees of freedom
+    psVector *cr, *extended;            // Measures of CR-ness and extendedness
+    psVector *psfMajor, *psfMinor, *psfTheta; // PSF major and minor axes, and position angle
+    psVector *quality, *numPix;               // PSF quality factor and number of pixels
+    psVector *xxMoment, *xyMoment, *yyMoment; // Moments
     psVector *flags;                    // psphot flags
     psVector *diffSkyfileId;            // Identifier for source image
     psVector *naxis1, *naxis2;          // Size of image
     psVector *mask;                     // Mask for detections
+    psVector *nPos;                     // Number of positive pixels
+    psVector *fPos;                     // Fraction of positive flux
+    psVector *nRatioBad;                // Fraction of positive pixels to negative
+    psVector *nRatioMask;               // Fraction of positive pixels to masked
+    psVector *nRatioAll;                // Fraction of positive pixels to all
 } ppMopsDetections;
+
 
 ppMopsDetections *ppMopsDetectionsAlloc(long num);
Index: trunk/ppTranslate/src/ppMopsDetections.c
===================================================================
--- trunk/ppTranslate/src/ppMopsDetections.c	(revision 28026)
+++ trunk/ppTranslate/src/ppMopsDetections.c	(revision 28027)
@@ -21,9 +21,16 @@
     psFree(det->mag);
     psFree(det->magErr);
+    psFree(det->chi2);
+    psFree(det->dof);
+    psFree(det->cr);
     psFree(det->extended);
-    psFree(det->angle);
-    psFree(det->angleErr);
-    psFree(det->length);
-    psFree(det->lengthErr);
+    psFree(det->psfMajor);
+    psFree(det->psfMinor);
+    psFree(det->psfTheta);
+    psFree(det->quality);
+    psFree(det->numPix);
+    psFree(det->xxMoment);
+    psFree(det->xyMoment);
+    psFree(det->yyMoment);
     psFree(det->flags);
     psFree(det->diffSkyfileId);
@@ -31,4 +38,10 @@
     psFree(det->naxis2);
     psFree(det->mask);
+    psFree(det->nPos);
+    psFree(det->fPos);
+    psFree(det->nRatioBad);
+    psFree(det->nRatioMask);
+    psFree(det->nRatioAll);
+
     return;
 }
@@ -58,9 +71,16 @@
     det->mag = psVectorAllocEmpty(num, PS_TYPE_F32);
     det->magErr = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->chi2 = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->dof = psVectorAllocEmpty(num, PS_TYPE_S32);
+    det->cr = psVectorAllocEmpty(num, PS_TYPE_F32);
     det->extended = psVectorAllocEmpty(num, PS_TYPE_F32);
-    det->angle = psVectorAllocEmpty(num, PS_TYPE_F32);
-    det->angleErr = psVectorAllocEmpty(num, PS_TYPE_F32);
-    det->length = psVectorAllocEmpty(num, PS_TYPE_F32);
-    det->lengthErr = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->psfMajor = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->psfMinor = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->psfTheta = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->quality = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->numPix = psVectorAllocEmpty(num, PS_TYPE_S32);
+    det->xxMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->xyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->yyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
     det->flags = psVectorAllocEmpty(num, PS_TYPE_U32);
     det->diffSkyfileId = psVectorAllocEmpty(num, PS_TYPE_S64);
@@ -68,4 +88,9 @@
     det->naxis2 = psVectorAllocEmpty(num, PS_TYPE_S32);
     det->mask = psVectorAllocEmpty(num, PS_TYPE_U8);
+    det->nPos = psVectorAllocEmpty(num, PS_TYPE_S32);
+    det->fPos = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->nRatioBad = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->nRatioMask = psVectorAllocEmpty(num, PS_TYPE_F32);
+    det->nRatioAll = psVectorAllocEmpty(num, PS_TYPE_F32);
 
     return det;
@@ -83,9 +108,16 @@
     det->mag = psVectorRealloc(det->mag, num);
     det->magErr = psVectorRealloc(det->magErr, num);
+    det->chi2 = psVectorRealloc(det->chi2, num);
+    det->dof = psVectorRealloc(det->dof, num);
+    det->cr = psVectorRealloc(det->cr, num);
     det->extended = psVectorRealloc(det->extended, num);
-    det->angle = psVectorRealloc(det->angle, num);
-    det->angleErr = psVectorRealloc(det->angleErr, num);
-    det->length = psVectorRealloc(det->length, num);
-    det->lengthErr = psVectorRealloc(det->lengthErr, num);
+    det->psfMajor = psVectorRealloc(det->psfMajor, num);
+    det->psfMinor = psVectorRealloc(det->psfMinor, num);
+    det->psfTheta = psVectorRealloc(det->psfTheta, num);
+    det->quality = psVectorRealloc(det->quality, num);
+    det->numPix = psVectorRealloc(det->numPix, num);
+    det->xxMoment = psVectorRealloc(det->xxMoment, num);
+    det->xyMoment = psVectorRealloc(det->xyMoment, num);
+    det->yyMoment = psVectorRealloc(det->yyMoment, num);
     det->flags = psVectorRealloc(det->flags, num);
     det->diffSkyfileId = psVectorRealloc(det->diffSkyfileId, num);
@@ -93,4 +125,9 @@
     det->naxis2 = psVectorRealloc(det->naxis2, num);
     det->mask = psVectorRealloc(det->mask, num);
+    det->nPos = psVectorRealloc(det->nPos, num);
+    det->fPos = psVectorRealloc(det->fPos, num);
+    det->nRatioBad = psVectorRealloc(det->nRatioBad, num);
+    det->nRatioMask = psVectorRealloc(det->nRatioMask, num);
+    det->nRatioAll = psVectorRealloc(det->nRatioAll, num);
 
     return det;
@@ -99,7 +136,10 @@
 
 bool ppMopsDetectionsAdd(ppMopsDetections *det, float x, float y, double ra, double dec,
-                         double raErr, double decErr, float mag, float magErr, float extended,
-                         float angle, float angleErr, float length, float lengthErr,
-                         psU32 flags, psS64 diffSkyfileId, int naxis1, int naxis2)
+                         double raErr, double decErr, float mag, float magErr,
+                         float chi2, int dof, float cr, float extended, float psfMajor,
+                         float psfMinor, float psfTheta, float quality, int numPix,
+                         float xxMoment, float xyMoment, float yyMoment,
+                         psU32 flags, psS64 diffSkyfileId, int naxis1, int naxis2,
+                         int nPos, float fPos, float nRatioBad, float nRatioMask, float nRatioAll)
 {
     psVectorAppend(det->x, x);
@@ -111,9 +151,16 @@
     psVectorAppend(det->mag, mag);
     psVectorAppend(det->magErr, magErr);
+    psVectorAppend(det->chi2, chi2);
+    psVectorAppend(det->dof, dof);
+    psVectorAppend(det->cr, cr);
     psVectorAppend(det->extended, extended);
-    psVectorAppend(det->angle, angle);
-    psVectorAppend(det->angleErr, angleErr);
-    psVectorAppend(det->length, length);
-    psVectorAppend(det->lengthErr, lengthErr);
+    psVectorAppend(det->psfMajor, psfMajor);
+    psVectorAppend(det->psfMinor, psfMinor);
+    psVectorAppend(det->psfTheta, psfTheta);
+    psVectorAppend(det->quality, quality);
+    psVectorAppend(det->numPix, numPix);
+    psVectorAppend(det->xxMoment, xxMoment);
+    psVectorAppend(det->xyMoment, xyMoment);
+    psVectorAppend(det->yyMoment, yyMoment);
     psVectorAppend(det->flags, flags);
     psVectorAppend(det->diffSkyfileId, diffSkyfileId);
@@ -121,4 +168,10 @@
     psVectorAppend(det->naxis2, naxis2);
     psVectorAppend(det->mask, 0);
+    psVectorAppend(det->nPos, nPos);
+    psVectorAppend(det->fPos, fPos);
+    psVectorAppend(det->nRatioBad, nRatioBad);
+    psVectorAppend(det->nRatioMask, nRatioMask);
+    psVectorAppend(det->nRatioAll, nRatioAll);
+
     return true;
 }
@@ -135,9 +188,16 @@
     psVectorAppend(target->mag, source->mag->data.F32[index]);
     psVectorAppend(target->magErr, source->magErr->data.F32[index]);
+    psVectorAppend(target->chi2, source->chi2->data.F32[index]);
+    psVectorAppend(target->dof, source->dof->data.S32[index]);
+    psVectorAppend(target->cr, source->cr->data.F32[index]);
     psVectorAppend(target->extended, source->extended->data.F32[index]);
-    psVectorAppend(target->angle, source->angle->data.F32[index]);
-    psVectorAppend(target->angleErr, source->angleErr->data.F32[index]);
-    psVectorAppend(target->length, source->length->data.F32[index]);
-    psVectorAppend(target->lengthErr, source->lengthErr->data.F32[index]);
+    psVectorAppend(target->psfMajor, source->psfMajor->data.F32[index]);
+    psVectorAppend(target->psfMinor, source->psfMinor->data.F32[index]);
+    psVectorAppend(target->psfTheta, source->psfTheta->data.F32[index]);
+    psVectorAppend(target->quality, source->quality->data.F32[index]);
+    psVectorAppend(target->numPix, source->numPix->data.S32[index]);
+    psVectorAppend(target->xxMoment, source->xxMoment->data.F32[index]);
+    psVectorAppend(target->xyMoment, source->xyMoment->data.F32[index]);
+    psVectorAppend(target->yyMoment, source->yyMoment->data.F32[index]);
     psVectorAppend(target->flags, source->flags->data.U32[index]);
     psVectorAppend(target->diffSkyfileId, source->diffSkyfileId->data.S64[index]);
@@ -145,5 +205,12 @@
     psVectorAppend(target->naxis2, source->naxis2->data.S32[index]);
     psVectorAppend(target->mask, 0);
+    psVectorAppend(target->nPos, source->nPos->data.S32[index]);
+    psVectorAppend(target->fPos, source->fPos->data.F32[index]);
+    psVectorAppend(target->nRatioBad, source->nRatioBad->data.F32[index]);
+    psVectorAppend(target->nRatioMask, source->nRatioMask->data.F32[index]);
+    psVectorAppend(target->nRatioAll, source->nRatioAll->data.F32[index]);
+
     target->num++;
+
     return true;
 }
@@ -168,9 +235,16 @@
             det->mag->data.F32[num] = det->mag->data.F32[i];
             det->magErr->data.F32[num] = det->magErr->data.F32[i];
+            det->chi2->data.F32[num] = det->chi2->data.F32[i];
+            det->dof->data.S32[num] = det->dof->data.S32[i];
+            det->cr->data.F32[num] = det->cr->data.F32[i];
             det->extended->data.F32[num] = det->extended->data.F32[i];
-            det->angle->data.F32[num] = det->angle->data.F32[i];
-            det->angleErr->data.F32[num] = det->angleErr->data.F32[i];
-            det->length->data.F32[num] = det->length->data.F32[i];
-            det->lengthErr->data.F32[num] = det->lengthErr->data.F32[i];
+            det->psfMajor->data.F32[num] = det->psfMajor->data.F32[i];
+            det->psfMinor->data.F32[num] = det->psfMinor->data.F32[i];
+            det->psfTheta->data.F32[num] = det->psfTheta->data.F32[i];
+            det->quality->data.F32[num] = det->quality->data.F32[i];
+            det->numPix->data.S32[num] = det->numPix->data.S32[i];
+            det->xxMoment->data.F32[num] = det->xxMoment->data.F32[i];
+            det->xyMoment->data.F32[num] = det->xyMoment->data.F32[i];
+            det->yyMoment->data.F32[num] = det->yyMoment->data.F32[i];
             det->flags->data.U32[num] = det->flags->data.U32[i];
             det->diffSkyfileId->data.S64[num] = det->diffSkyfileId->data.S64[i];
@@ -178,4 +252,9 @@
             det->naxis2->data.S32[num] = det->naxis2->data.S32[i];
             det->mask->data.U8[num] = 0;
+            det->nPos->data.S32[num] = det->nPos->data.S32[i];
+            det->fPos->data.F32[num] = det->fPos->data.F32[i];
+            det->nRatioBad->data.F32[num] = det->nRatioBad->data.F32[i];
+            det->nRatioMask->data.F32[num] = det->nRatioMask->data.F32[i];
+            det->nRatioAll->data.F32[num] = det->nRatioAll->data.F32[i];
             num++;
         }
@@ -189,9 +268,16 @@
     det->mag->n = num;
     det->magErr->n = num;
+    det->chi2->n = num;
+    det->dof->n = num;
+    det->cr->n = num;
     det->extended->n = num;
-    det->angle->n = num;
-    det->angleErr->n = num;
-    det->length->n = num;
-    det->lengthErr->n = num;
+    det->psfMajor->n = num;
+    det->psfMinor->n = num;
+    det->psfTheta->n = num;
+    det->quality->n = num;
+    det->numPix->n = num;
+    det->xxMoment->n = num;
+    det->xyMoment->n = num;
+    det->yyMoment->n = num;
     det->flags->n = num;
     det->diffSkyfileId->n = num;
@@ -200,4 +286,10 @@
     det->mask->n = num;
     det->num = num;
+    det->nPos->n = num;
+    det->fPos->n = num;
+    det->nRatioBad->n = num;
+    det->nRatioMask->n = num;
+    det->nRatioAll->n = num;
+
     return true;
 }
Index: trunk/ppTranslate/src/ppMopsRead.c
===================================================================
--- trunk/ppTranslate/src/ppMopsRead.c	(revision 28026)
+++ trunk/ppTranslate/src/ppMopsRead.c	(revision 28027)
@@ -93,13 +93,26 @@
             det->mag->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG");
             det->magErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG_SIG");
+            det->chi2->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_CHISQ");
+            det->dof->data.S32[numGood] = psMetadataLookupS32(NULL, row, "PSF_NDOF");
+            det->cr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "CR_NSIGMA");
             det->extended->data.F32[numGood] = psMetadataLookupF32(NULL, row, "EXT_NSIGMA");
-            det->angle->data.F32[numGood] = 0.0;
-            det->angleErr->data.F32[numGood] = 0.0;
-            det->length->data.F32[numGood] = 0.0;
-            det->lengthErr->data.F32[numGood] = 0.0;
+            det->psfMajor->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_MAJOR");
+            det->psfMinor->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_MINOR");
+            det->psfTheta->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_THETA");
+            det->quality->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF");
+            det->numPix->data.S32[numGood] = psMetadataLookupS32(NULL, row, "PSF_NPIX");
+            det->xxMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_XX");
+            det->xyMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_XY");
+            det->yyMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_YY");
             det->flags->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS");
             det->diffSkyfileId->data.S64[numGood] = diffSkyfileId;
             det->naxis1->data.S32[numGood] = naxis1;
             det->naxis2->data.S32[numGood] = naxis2;
+
+            det->nPos->data.S32[numGood] = psMetadataLookupS32(NULL, row, "DIFF_NPOS");
+            det->fPos->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_FRATIO");
+            det->nRatioBad->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_BAD");
+            det->nRatioMask->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_MASK");
+            det->nRatioAll->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_ALL");
 
             // Calculate error in RA, Dec
@@ -146,9 +159,16 @@
         det->mag->n = numGood;
         det->magErr->n = numGood;
+        det->chi2->n = numGood;
+        det->dof->n = numGood;
+        det->cr->n = numGood;
         det->extended->n = numGood;
-        det->angle->n = numGood;
-        det->angleErr->n = numGood;
-        det->length->n = numGood;
-        det->lengthErr->n = numGood;
+        det->psfMajor->n = numGood;
+        det->psfMinor->n = numGood;
+        det->psfTheta->n = numGood;
+        det->quality->n = numGood;
+        det->numPix->n = numGood;
+        det->xxMoment->n = numGood;
+        det->xyMoment->n = numGood;
+        det->yyMoment->n = numGood;
         det->flags->n = numGood;
         det->diffSkyfileId->n = numGood;
@@ -156,4 +176,9 @@
         det->naxis2->n = numGood;
         det->mask->n = numGood;
+        det->nPos->n = numGood;
+        det->fPos->n = numGood;
+        det->nRatioBad->n = numGood;
+        det->nRatioMask->n = numGood;
+        det->nRatioAll->n = numGood;
 
         det->num = numGood;
Index: trunk/ppTranslate/src/ppMopsWrite.c
===================================================================
--- trunk/ppTranslate/src/ppMopsWrite.c	(revision 28026)
+++ trunk/ppTranslate/src/ppMopsWrite.c	(revision 28027)
@@ -61,11 +61,24 @@
         psMetadataAddF32(row, PS_LIST_TAIL, "MAG", 0, "Magnitude", NAN);
         psMetadataAddF32(row, PS_LIST_TAIL, "MAG_ERR", 0, "Magnitude error", NAN);
-        psMetadataAddF32(row, PS_LIST_TAIL, "STARPSF", 0, "EXT_NSIGMA", NAN);
-        psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE", 0, "Position angle of trail (degrees)", NAN);
-        psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE_ERR", 0, "Position angle error (degrees)", NAN);
-        psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH", 0, "Length of trail (arcsec)", NAN);
-        psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH_ERR", 0, "Length error (arcsec)", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_CHI2", 0, "chi^2 of PSF fit", NAN);
+        psMetadataAddS32(row, PS_LIST_TAIL, "PSF_DOF", 0, "Degrees of freedom of PSF fit", 0);
+        psMetadataAddF32(row, PS_LIST_TAIL, "CR_SIGNIFICANCE", 0, "Significance of CR", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "EXT_SIGNIFICANCE", 0, "Significance of extendedness", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MAJOR", 0, "PSF major axis (pixels)", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MINOR", 0, "PSF minor axis (pixels)", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_THETA", 0, "PSF position angle (deg on chip)", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_QUALITY", 0, "PSF quality factor", NAN);
+        psMetadataAddS32(row, PS_LIST_TAIL, "PSF_NPIX", 0, "Number of pixels in PSF", 0);
+        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XX", 0, "xx moment", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XY", 0, "xy moment", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_YY", 0, "yy moment", NAN);
         psMetadataAddU32(row, PS_LIST_TAIL, "FLAGS", 0, "Detection bit flags", 0);
         psMetadataAddS64(row, PS_LIST_TAIL, "DIFF_SKYFILE_ID", 0, "Identifier for diff skyfile", 0);
+
+        psMetadataAddS32(row, PS_LIST_TAIL, "N_POS", 0, "Number of positive pixels", 0);
+        psMetadataAddF32(row, PS_LIST_TAIL, "F_POS", 0, "Fraction of positive pixels", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_BAD", 0, "Ratio of positive pixels to negative", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_MASK", 0, "Ratio of positive pixels to masked", NAN);
+        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_ALL", 0, "Ratio of positive pixels to all", NAN);
         if (!psFitsWriteTableEmpty(fits, header, row, OUT_EXTNAME)) {
             psErrorStackPrint(stderr, "Unable to write empty table.");
@@ -89,16 +102,36 @@
             psMetadataAddF32(row, PS_LIST_TAIL, "MAG", 0, "Magnitude", det->mag->data.F32[i]);
             psMetadataAddF32(row, PS_LIST_TAIL, "MAG_ERR", 0, "Magnitude error", det->magErr->data.F32[i]);
-            psMetadataAddF32(row, PS_LIST_TAIL, "STARPSF", 0, "EXT_NSIGMA", det->extended->data.F32[i]);
-            psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE", 0, "Position angle of trail (degrees)",
-                             det->angle->data.F32[i]);
-            psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE_ERR", 0, "Position angle error (degrees)",
-                             det->angleErr->data.F32[i]);
-            psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH", 0, "Length of trail (arcsec)",
-                             det->length->data.F32[i]);
-            psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH_ERR", 0, "Length error (arcsec)",
-                             det->lengthErr->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_CHI2", 0, "chi^2 of PSF fit", det->chi2->data.F32[i]);
+            psMetadataAddS32(row, PS_LIST_TAIL, "PSF_DOF", 0, "Degrees of freedom of PSF fit",
+                             det->dof->data.S32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "CR_SIGNIFICANCE", 0, "Significance of CR",
+                             det->cr->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "EXT_SIGNIFICANCE", 0, "Significance of extendedness",
+                             det->extended->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MAJOR", 0, "PSF major axis (pixels)", det->psfMajor->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MINOR", 0, "PSF minor axis (pixels)", det->psfMinor->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_THETA", 0, "PSF position angle (deg on chip)",
+                             det->psfTheta->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_QUALITY", 0, "PSF quality factor",
+                             det->quality->data.F32[i]);
+            psMetadataAddS32(row, PS_LIST_TAIL, "PSF_NPIX", 0, "Number of pixels in PSF",
+                             det->numPix->data.S32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XX", 0, "xx moment", det->xxMoment->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XY", 0, "xy moment", det->xyMoment->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_YY", 0, "yy moment", det->yyMoment->data.F32[i]);
+            psMetadataAddS32(row, PS_LIST_TAIL, "N_POS", 0, "Number of positive pixels",
+                             det->nPos->data.S32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "F_POS", 0, "Fraction of positive pixels",
+                             det->fPos->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_BAD", 0, "Ratio of positive pixels to negative",
+                             det->nRatioBad->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_MASK", 0, "Ratio of positive pixels to masked",
+                             det->nRatioMask->data.F32[i]);
+            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_ALL", 0, "Ratio of positive pixels to all",
+                             det->nRatioAll->data.F32[i]);
             psMetadataAddU32(row, PS_LIST_TAIL, "FLAGS", 0, "Detection bit flags", det->flags->data.U32[i]);
             psMetadataAddS64(row, PS_LIST_TAIL, "DIFF_SKYFILE_ID", 0, "Identifier for diff skyfile",
                              det->diffSkyfileId->data.S64[i]);
+
             table->data[i] = row;
         }
