Index: /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCM_MinimizeChisq.c
===================================================================
--- /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCM_MinimizeChisq.c	(revision 36275)
+++ /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCM_MinimizeChisq.c	(revision 36276)
@@ -477,5 +477,8 @@
 	// * threading takes place above this level
 	pcm->modelConvFlux = psImageCopy (pcm->modelConvFlux, pcm->modelFlux, pcm->modelFlux->type.type);
-	psImageSmoothCache_F32 (pcm->modelConvFlux, pcm->smdata);
+	
+	// hard-wire this for now?
+	psImageSmoothCache_F32 (pcm->modelConvFlux, pcm->smdata1);
+	psImageSmoothCache_F32 (pcm->modelConvFlux, pcm->smdata2);
     } else {
 	psImageConvolveKernel (pcm->modelConvFlux, pcm->modelFlux, NULL, 0, pcm->psfFFT);
@@ -496,5 +499,6 @@
 	    // * threading takes place above this level
 	    dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
-	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata);
+	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata1);
+	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata2);
 	} else {
 	    psImageConvolveKernel (dmodelConv, dmodel, NULL, 0, pcm->psfFFT);
@@ -516,5 +520,6 @@
 	    // * threading takes place above this level
 	    dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
-	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata);
+	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata1);
+	    psImageSmoothCache_F32 (dmodelConv, pcm->smdata2);
 	} else {
 	    psImageConvolveFFT (dmodelConv, dmodel, NULL, 0, pcm->psf);
Index: /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.c
===================================================================
--- /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.c	(revision 36275)
+++ /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.c	(revision 36276)
@@ -58,5 +58,7 @@
     psFree (pcm->psfFFT);
     psFree (pcm->constraint);
-    psFree (pcm->smdata); // pre-allocated data for psImageSmooth_PreAlloc
+
+    psFree (pcm->smdata1); // pre-allocated data for psImageSmooth_PreAlloc
+    psFree (pcm->smdata2); // pre-allocated data for psImageSmooth_PreAlloc
     return;
 }
@@ -88,5 +90,7 @@
     }
 
-    pcm->smdata = NULL;
+    pcm->smdata1 = NULL;
+    pcm->smdata2 = NULL;
+
     pcm->modelConv = NULL;
     pcm->psf = NULL;
@@ -284,5 +288,6 @@
 }
 
-psImageSmoothCacheData *psImageSmoothCacheSetKernel (float *sigma, float *kappa, psImage *flux, pmModel *modelPSF) {
+// set 2 gaussians (extend to more if interesting)
+psImageSmoothCacheData *psImageSmoothCacheSetKernel (float *sigma1, float *sigma2, psImage *flux, pmModel *modelPSF) {
 
     psAssert (modelPSF, "psf model must be defined");
@@ -294,11 +299,13 @@
     
     float nsigma = 5.0;
-    *sigma = NAN;
-    *kappa = NAN;
-
+    *sigma1 = NAN;
+    *sigma2 = NAN;
+
+    // XXX need to do this more carefully
     if (modelPSF->type == modelType_GAUSS) {
 	float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
 	float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
-	*sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
+	*sigma1 = 0.50 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
+	*sigma2 = 0.25 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
     }
     if (modelPSF->type == modelType_PS1_V1) {
Index: /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.h
===================================================================
--- /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.h	(revision 36275)
+++ /branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.h	(revision 36276)
@@ -39,9 +39,10 @@
 
     bool use1Dgauss;
-    float sigma;
     float kappa;
     float nsigma;
 
+    // psArray *smdata;
     psImageSmoothCacheData *smdata;
+    psImageSmooth2dCacheData *smdata2d;
 } pmPCMdata;
 
