Index: /trunk/psphot/src/Makefile.am
===================================================================
--- /trunk/psphot/src/Makefile.am	(revision 19906)
+++ /trunk/psphot/src/Makefile.am	(revision 19907)
@@ -19,4 +19,6 @@
 libpsphot_la_SOURCES = \
 	psphotErrorCodes.c	       \
+	psphotImageQuality.c           \
+	psphotVisual.c                 \
 	psphotCullPeaks.c	       \
 	psphotVersion.c		       \
@@ -74,5 +76,4 @@
 	psphotMakeFluxScale.c	       \
 	psphotCheckStarDistribution.c  \
-	psphotVisual.c                 \
 	psphotAddNoise.c
 
Index: /trunk/psphot/src/psphotImageQuality.c
===================================================================
--- /trunk/psphot/src/psphotImageQuality.c	(revision 19906)
+++ /trunk/psphot/src/psphotImageQuality.c	(revision 19907)
@@ -4,7 +4,7 @@
 bool psphotImageQuality (psMetadata *recipe, psArray *sources) {
 
-    psVector *M2 = psVectorAllocEmpty (100);
-    psVector *M3 = psVectorAllocEmpty (100);
-    psVector *M4 = psVectorAllocEmpty (100);
+    psVector *M2 = psVectorAllocEmpty (100, PS_TYPE_F32);
+    psVector *M3 = psVectorAllocEmpty (100, PS_TYPE_F32);
+    psVector *M4 = psVectorAllocEmpty (100, PS_TYPE_F32);
 
     for (int i = 0; i < sources->n; i++) {
@@ -37,36 +37,41 @@
 
 	// the moments->Mnnn terms contain the straight sums: for example: moments->Mxxx contains \sum x^3 / r
-	M_c2 = moments->Mxx - moments->Myy;
-	M_s2 = 2*moments->Mxy;
-	psVectorAppend (M2, sqrt (M_c2^2 + M_s2^2));
+	float M_c2 = moments->Mxx - moments->Myy;
+	float M_s2 = 2*moments->Mxy;
+	psVectorAppend (M2, hypot(M_c2, M_s2));
 	
-	M_c3 = moments->Mxxx - 3.0*moments->Mxyy;
-	M_s3 = 3.0*moments->Mxxy - moments->Myyy;
-	psVectorAppend (M3, sqrt (M_c3^2 + M_s3^2));
+	float M_c3 = moments->Mxxx - 3.0*moments->Mxyy;
+	float M_s3 = 3.0*moments->Mxxy - moments->Myyy;
+	psVectorAppend (M3, hypot (M_c3, M_s3));
 	
-	M_c4 = moments->Mxxxx - 6.0*moments->Mxxyy + moments->Myyyy;
-	M_s4 = 4.0*moments->Mxxxy - 4.0*moments->Mxyyy;
-	psVectorAppend (M4, sqrt (M_c2^2 + M_s2^2));
+	float M_c4 = moments->Mxxxx - 6.0*moments->Mxxyy + moments->Myyyy;
+	float M_s4 = 4.0*moments->Mxxxy - 4.0*moments->Mxyyy;
+	psVectorAppend (M4, hypot (M_c4, M_s4));
     }	
 
-    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN, PS_STAT_ROBUST_STDEV);
+    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
 
     psVectorStats (stats, M2, NULL, NULL, 0);
     float vM2 = stats->robustMedian;
     float dM2 = stats->robustStdev;
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M2",   PS_META_REPLACE, "M_2 = sqrt (M_c2^2 + M_s2^2)", vM2);
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M2", PS_META_REPLACE, "Stdev of M_2", dM2);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M2",   PS_META_REPLACE, "M_2 = sqrt (M_c2^2 + M_s2^2)", vM2);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M2", PS_META_REPLACE, "Stdev of M_2", dM2);
 
     psVectorStats (stats, M3, NULL, NULL, 0);
     float vM3 = stats->robustMedian;
     float dM3 = stats->robustStdev;
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M3",   PS_META_REPLACE, "M_3 = sqrt (M_c3^2 + M_s3^2)", vM3);
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M3", PS_META_REPLACE, "Stdev of M_3", dM3);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M3",   PS_META_REPLACE, "M_3 = sqrt (M_c3^2 + M_s3^2)", vM3);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M3", PS_META_REPLACE, "Stdev of M_3", dM3);
 
-    psVectorStats (stats, M3, NULL, NULL, 0);
+    psVectorStats (stats, M4, NULL, NULL, 0);
     float vM4 = stats->robustMedian;
     float dM4 = stats->robustStdev;
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_M4",   PS_META_REPLACE, "M_4 = sqrt (M_c4^2 + M_s4^2)", vM4);
-    psMetadataAddF32 (header, PS_LIST_TAIL, "IQ_D_M4", PS_META_REPLACE, "Stdev of M_4", dM4);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_M4",   PS_META_REPLACE, "M_4 = sqrt (M_c4^2 + M_s4^2)", vM4);
+    psMetadataAddF32 (recipe, PS_LIST_TAIL, "IQ_D_M4", PS_META_REPLACE, "Stdev of M_4", dM4);
+
+    psFree (M2);
+    psFree (M3);
+    psFree (M4);
+    psFree (stats);
 
     psLogMsg ("psphot", PS_LOG_INFO, "Image Quality Stats : M_2 : %f +/- %f, M_3 : %f +/- %f, M_4 : %f +/- %f\n", vM2, dM2, vM3, dM3, vM4, dM4);
