Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss-pol.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss-pol.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss-pol.c	(revision 42714)
@@ -51,4 +51,14 @@
   set_variable ("Zpk",  par[5]);
   set_variable ("Sg",   par[6]);
+
+  /*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  NAN);
+  set_variable ("dSYg",  NAN);
+  set_variable ("dSXYg", NAN);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  */
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-fgauss.c	(revision 42714)
@@ -39,4 +39,14 @@
   set_variable ("Zpk",  par[5]);
   set_variable ("Sg",   par[6]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss-psf.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss-psf.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss-psf.c	(revision 42714)
@@ -35,4 +35,11 @@
   set_variable ("Zpk",  par[2]);
   set_variable ("Sg",   par[3]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dZpk",  dpar[2]);
+  set_variable ("dSg",   dpar[3]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-pgauss.c	(revision 42714)
@@ -37,4 +37,14 @@
   set_variable ("Zpk",  par[5]);
   set_variable ("Sg",   par[6]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-q2gauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-q2gauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-q2gauss.c	(revision 42714)
@@ -41,4 +41,15 @@
   set_variable ("Sg",   par[6]);
   set_variable ("Sr", par[7]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSr",   dpar[7]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qfgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qfgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qfgauss.c	(revision 42714)
@@ -41,4 +41,14 @@
   set_variable ("Zpk",  par[5]);
   set_variable ("Sg",   par[6]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss-psf.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss-psf.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss-psf.c	(revision 42714)
@@ -38,4 +38,11 @@
   set_variable ("Zpk", par[2]);
   set_variable ("Sg",  par[3]);
+
+  /*
+  set_variable ("dXg",  dpar[0]);
+  set_variable ("dYg",  dpar[1]);
+  set_variable ("dZpk", dpar[2]);
+  set_variable ("dSg",  dpar[3]);
+  */
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qgauss.c	(revision 42714)
@@ -41,4 +41,15 @@
   set_variable ("Sg",   par[6]);
   set_variable ("Sr",   par[7]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSr",   dpar[7]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c	(revision 42714)
@@ -42,4 +42,15 @@
   set_variable ("Sg",   par[6]);
   set_variable ("Npow", par[7]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dNpow",   dpar[7]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-r2gauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-r2gauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-r2gauss.c	(revision 42714)
@@ -85,3 +85,16 @@
   set_variable ("SYf", 2.35 * sqrt(2.0) / par[8]);
   set_variable ("SXYf", par[9]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 * sqrt(2.0) / dpar[2]);
+  set_variable ("dSYg",  2.35 * sqrt(2.0) / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSXf", 2.35 * sqrt(2.0) / dpar[7]);
+  set_variable ("dSYf", 2.35 * sqrt(2.0) / dpar[8]);
+  set_variable ("dSXYf", dpar[9]);
+*/
 }
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-rgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-rgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-rgauss.c	(revision 42714)
@@ -42,4 +42,15 @@
   set_variable ("Sg",   par[6]);
   set_variable ("Sr",   par[7]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSr",   dpar[7]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-sgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-sgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-sgauss.c	(revision 42714)
@@ -49,4 +49,17 @@
   set_variable ("SYf", 2.35 / par[8]);
   set_variable ("SXYf", par[9]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSXf", 2.35 / dpar[7]);
+  set_variable ("dSYf", 2.35 / dpar[8]);
+  set_variable ("dSXYf", dpar[9]);
+*/
 }
 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-tgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-tgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-tgauss.c	(revision 42714)
@@ -80,3 +80,16 @@
   set_variable ("SYf",  2.35 * sqrt(2.0) / par[8]);
   set_variable ("SXYf", par[9]);
+
+/*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 * sqrt(2.0) / dpar[2]);
+  set_variable ("dSYg",  2.35 * sqrt(2.0) / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSXf",  2.35 * sqrt(2.0) / dpar[7]);
+  set_variable ("dSYf",  2.35 * sqrt(2.0) / dpar[8]);
+  set_variable ("dSXYf", dpar[9]);
+*/
 }
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-vgauss.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-vgauss.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit-vgauss.c	(revision 42714)
@@ -69,3 +69,15 @@
   set_variable ("SXf", par[7]);
   set_variable ("SYf", par[8]);
+
+  /*
+  set_variable ("dXg",   dpar[0]);
+  set_variable ("dYg",   dpar[1]);
+  set_variable ("dSXg",  2.35 / dpar[2]);
+  set_variable ("dSYg",  2.35 / dpar[3]);
+  set_variable ("dSXYg", dpar[4]);
+  set_variable ("dZpk",  dpar[5]);
+  set_variable ("dSg",   dpar[6]);
+  set_variable ("dSXf",  dpar[7]);
+  set_variable ("dSYf",  dpar[8]);
+  */
 }
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit.c	(revision 42713)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/imfit.c	(revision 42714)
@@ -13,4 +13,16 @@
   }
 
+  Buffer *var = NULL;
+  if ((N = get_argument (argc, argv, "-var-image"))) {
+    remove_argument (N, &argc, argv);
+    var = SelectBuffer (argv[N], OLDBUFFER, TRUE);
+    if (!var) {
+      gprint (GP_ERR, "unknown buffer for variance %s\n", argv[N]);
+      FREE (Save);
+      return (FALSE);
+    }
+    remove_argument (N, &argc, argv);
+  }
+
   int Insert = FALSE;
   if ((N = get_argument (argc, argv, "-insert"))) {
@@ -18,4 +30,5 @@
     Insert = TRUE;
     if (Save) { gprint (GP_ERR, "-save and -insert are mutually exclusive\n"); free (Save); return (FALSE); }
+    if (var)  { gprint (GP_ERR, "-save and -var-image are mutually exclusive\n"); return (FALSE); }
   }
 
@@ -40,4 +53,5 @@
     Gain = atof(argv[N]);
     remove_argument (N, &argc, argv);
+    if (var) { gprint (GP_ERR, "warning: -var-image selected, -gain will have no effect\n"); }
   }
 
@@ -48,4 +62,5 @@
     RDnoise = atof(argv[N]);
     remove_argument (N, &argc, argv);
+    if (var) { gprint (GP_ERR, "warning: -var-image selected, -rdnoise will have no effect\n"); }
   }
 
@@ -140,4 +155,5 @@
     if (j + sy >= Ny) continue;
     float *V = (float *)(buf[0].matrix.buffer) + (j+sy)*buf[0].matrix.Naxis[0] + sx; 
+    float *dV = (var) ? ((float *)(var[0].matrix.buffer) + (j+sy)*var[0].matrix.Naxis[0] + sx) : NULL;
     for (int i = 0; i < dX; i++) {
       if (i + sx < 0) continue;
@@ -145,5 +161,9 @@
       if (*V > SatThreshold) goto next; // skip pixels above threshold
       if (!isfinite(*V)) goto next; // skip nan pixels
-      dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise
+      if (dV) {
+	dz[N] = *dV;
+      } else {
+	dz[N] = (SQ(RDnoise) + MAX(0.0, *V/Gain)); // treat negative pixels as pure read noise
+      }
       if (dz[N] <= 0) goto next;
       dz[N] = 1.0 / dz[N];
@@ -154,4 +174,5 @@
     next:
       V++;
+      if (dV) { dV++; }
     }
   }
