Index: trunk/psModules/src/objects/pmModel.c
===================================================================
--- trunk/psModules/src/objects/pmModel.c	(revision 25738)
+++ trunk/psModules/src/objects/pmModel.c	(revision 25754)
@@ -56,10 +56,11 @@
 
     tmp->type = type;
-    tmp->chisq = 0.0;
-    tmp->chisqNorm = 0.0;
+    tmp->mag = NAN;
+    tmp->chisq = NAN;
+    tmp->chisqNorm = NAN;
     tmp->nDOF  = 0;
     tmp->nPix  = 0;
     tmp->nIter = 0;
-    tmp->radiusFit = 0;
+    tmp->fitRadius = 0;
     tmp->flags = PM_MODEL_STATUS_NONE;
     tmp->residuals = NULL;              // XXX should the model own this memory?
@@ -109,5 +110,5 @@
     new->nIter     = model->nIter;
     new->flags     = model->flags;
-    new->radiusFit = model->radiusFit;
+    new->fitRadius = model->fitRadius;
 
     for (int i = 0; i < new->params->n; i++) {
@@ -190,7 +191,7 @@
     psVector *params = model->params;
 
-    psS32 imageCol;
-    psS32 imageRow;
-    psF32 pixelValue;
+    float imageCol;
+    float imageRow;
+    float pixelValue;
 
     // save original values; restore before returning
@@ -233,17 +234,17 @@
     psF32 **Rx = NULL;
     psF32 **Ry = NULL;
-    psImageMaskType **Rm = NULL;
+    pmResidMaskType **Rm = NULL;
 
     if (model->residuals) {
-        DX = xBin*(image->col0 - xCenter - dx) + model->residuals->xCenter + 0.5;
-        DY = yBin*(image->row0 - yCenter - dy) + model->residuals->yCenter + 0.5;
-        Ro = (model->residuals->Ro)   ? model->residuals->Ro->data.F32 : NULL;
-        Rx = (model->residuals->Rx)   ? model->residuals->Rx->data.F32 : NULL;
-        Ry = (model->residuals->Ry)   ? model->residuals->Ry->data.F32 : NULL;
-        Rm = (model->residuals->mask) ? model->residuals->mask->data.PS_TYPE_IMAGE_MASK_DATA : NULL;
-        if (Ro) {
-            NX = model->residuals->Ro->numCols;
-            NY = model->residuals->Ro->numRows;
-        }
+	DX = xBin*(image->col0 - xCenter - dx) + model->residuals->xCenter + 0.5;
+	DY = yBin*(image->row0 - yCenter - dy) + model->residuals->yCenter + 0.5;
+	Ro = (model->residuals->Ro)   ? model->residuals->Ro->data.F32 : NULL;
+	Rx = (model->residuals->Rx)   ? model->residuals->Rx->data.F32 : NULL;
+	Ry = (model->residuals->Ry)   ? model->residuals->Ry->data.F32 : NULL;
+	Rm = (model->residuals->mask) ? model->residuals->mask->data.PM_TYPE_RESID_MASK_DATA : NULL;
+	if (Ro) {
+	    NX = model->residuals->Ro->numCols;
+	    NY = model->residuals->Ro->numRows;
+	}	    
     }
 
@@ -256,11 +257,11 @@
                 continue;
 
-            // XXX should we use using 0.5 pixel offset?
             // Convert to coordinate in parent image, with offset (dx,dy)
-            imageCol = ix + image->col0 - dx;
-            imageRow = iy + image->row0 - dy;
-
-            x->data.F32[0] = (float) imageCol;
-            x->data.F32[1] = (float) imageRow;
+	    // 0.5 PIX: the model take pixel coordinates so convert the pixel index here
+            imageCol = ix + 0.5 + image->col0 - dx;
+            imageRow = iy + 0.5 + image->row0 - dy;
+
+            x->data.F32[0] = imageCol;
+            x->data.F32[1] = imageRow;
 
             pixelValue = 0.0;
