Index: trunk/Ohana/src/opihi/cmd.astro/Makefile
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/Makefile	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/Makefile	(revision 2843)
@@ -51,5 +51,4 @@
 $(SDIR)/spec.$(ARCH).o		   \
 $(SDIR)/star.$(ARCH).o		   \
-$(SDIR)/testfit.$(ARCH).o	   \
 $(SDIR)/transform.$(ARCH).o
 
Index: trunk/Ohana/src/opihi/cmd.astro/biassub.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/biassub.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/biassub.c	(revision 2843)
@@ -10,5 +10,5 @@
 
   NoVector = TRUE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     NoVector = FALSE;
     remove_argument (N, &argc, argv);
Index: trunk/Ohana/src/opihi/cmd.astro/coords.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/coords.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/coords.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   mode = 0;
-  if (N = get_argument (argc, argv, "-p")) {
+  if ((N = get_argument (argc, argv, "-p"))) {
     remove_argument (N, &argc, argv);
     X = atof(argv[N]);
@@ -17,5 +17,5 @@
     mode = 1;
   }
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     if (mode == 1) {
       fprintf (stderr, "only one of -p or -c can be used\n");
Index: trunk/Ohana/src/opihi/cmd.astro/ctimes.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/ctimes.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/ctimes.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   Variable = (char *) NULL;
-  if (N = get_argument (argc, argv, "-var")) {
+  if ((N = get_argument (argc, argv, "-var"))) {
     remove_argument (N, &argc, argv);
     Variable = strcreate (argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/czplot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/czplot.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/czplot.c	(revision 2843)
@@ -10,5 +10,5 @@
 
   Ngraph = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Ngraph = atof (argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/drizzle.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/drizzle.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/drizzle.c	(revision 2843)
@@ -19,5 +19,5 @@
 
   ZERO = FALSE;
-  if (N = get_argument (argc, argv, "-zero")) {
+  if ((N = get_argument (argc, argv, "-zero"))) {
     ZERO = TRUE;
     remove_argument (N, &argc, argv);
Index: trunk/Ohana/src/opihi/cmd.astro/flux.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/flux.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/flux.c	(revision 2843)
@@ -4,5 +4,5 @@
   
   int i, j, k, xmin, ymin, xmax, ymax;
-  int oldsignal;
+  void *oldsignal;
   double ax, ay, s, S, flux;
   double bx[5], by[5], x[5], y[5], bb[5];
@@ -51,5 +51,5 @@
    we have to add up the angles for concave contours */
   flux = 0;
-  oldsignal = (int) signal (SIGINT, handle_interrupt);
+  oldsignal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
   for (j = ymin; (j < ymax) && !interrupt; j++) {
@@ -68,5 +68,5 @@
     }
   }
-  signal (SIGINT, (void *) oldsignal);
+  signal (SIGINT, oldsignal);
 
   fprintf (GetOutfile(), "flux: %f\n", flux);
Index: trunk/Ohana/src/opihi/cmd.astro/gauss.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/gauss.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/gauss.c	(revision 2843)
@@ -10,5 +10,5 @@
 
   Nimage = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nimage = atof (argv[N]);
@@ -18,5 +18,5 @@
 
   Nborder = 3;
-  if (N = get_argument (argc, argv, "-border")) {
+  if ((N = get_argument (argc, argv, "-border"))) {
     remove_argument (N, &argc, argv);
     Nborder  = atof(argv[N]);
@@ -26,5 +26,5 @@
   
   max = 60000;
-  if (N = get_argument (argc, argv, "-sat")) {
+  if ((N = get_argument (argc, argv, "-sat"))) {
     remove_argument (N, &argc, argv);
     max  = atof(argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/imfit.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 2843)
@@ -1,48 +1,25 @@
 # include "astro.h"
 
-# define SUBTRACT 0
-
-static float (*fitfunc)(float, float, float *, int, float *);
-
 float fgaussTD (float, float, float *, int, float *);
-float fgalaxyTD (float, float, float *, int, float *);
-float fbarTD (float, float, float *, int, float *);
-void fix_ellipsegauss_pars (float *par, int Npar);
-
-/*** for some reason, fgaussTD fails occasionally if we use these two vars... */ 
-static float f1, f2;
 
 int imfit (int argc, char **argv) {
 
-  int i, j, N, done, Npts, Subtract;
-  double Npar, DZ, DZ2;
-  float dx, dy, chisq, nchisq;
-  float **covar;
-  float *V, *x, *y, *z, *dz, *par, tmpsky, DFact;
-  int sx, sy, nx, ny;
-  char *c, line[64];
+  int i, j, N, Npts, Npar, Save, VERBOSE;
+  int sx, sy, nx, ny, Nx, Ny;
+  float chisq, ochisq, dchisq;
+  float *x, *y, *z, *dz, *par, *V;
+  char line[64];
   Buffer *buf;
 
-  Subtract = FALSE;
-  if (N = get_argument (argc, argv, "-sub")) {
-    remove_argument (N, &argc, argv);
-    Subtract  = TRUE;
-  }
-
-  DFact = 1;
-  if (N = get_argument (argc, argv, "-D")) {
-    remove_argument (N, &argc, argv);
-    DFact  = atof(argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-
-  fitfunc = fgaussTD;
-  if (N = get_argument (argc, argv, "-gal")) {
-    remove_argument (N, &argc, argv);
-    fitfunc = fgalaxyTD; 
-  }
-  if (N = get_argument (argc, argv, "-bar")) {
-    remove_argument (N, &argc, argv);
-    fitfunc = fbarTD; 
+  Save = FALSE;
+  if ((N = get_argument (argc, argv, "-save"))) {
+    remove_argument (N, &argc, argv);
+    Save = TRUE;
+  }
+
+  VERBOSE = FALSE;
+  if ((N = get_argument (argc, argv, "-v"))) {
+    remove_argument (N, &argc, argv);
+    VERBOSE = TRUE;
   }
 
@@ -53,22 +30,15 @@
 
   if ((buf = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) return (FALSE);
-
-  f1 = 1;
-  if ((c = get_variable ("BETA1")) != (char *) NULL) f1 = atof (c);
-
-  f2 = 1;
-  if ((c = get_variable ("BETA2")) != (char *) NULL) f2 = atof (c);
-
   sx = atof (argv[2]);
   sy = atof (argv[3]);
   nx = atof (argv[4]);
   ny = atof (argv[5]);
-
-  if ((sx < 0) || (sy < 0) || 
-      (sx+nx > buf[0].matrix.Naxis[0]) || 
-      (sy+ny > buf[0].matrix.Naxis[1])) {
-    fprintf (stderr, "region out of range\n");
-    return (FALSE);
-  }
+  Nx = buf[0].matrix.Naxis[0];
+  Ny = buf[0].matrix.Naxis[1];
+
+  if (sx < 0) goto range;
+  if (sy < 0) goto range;
+  if (sx + nx >= Nx) goto range;
+  if (sy + ny >= Ny) goto range;
 
   Npar = 7;
@@ -78,18 +48,17 @@
   /* convert array z[x,y] to x[i], y[i], z[i] */
   Npts = nx*ny;
-  ALLOCATE (x, float, 2*Npts);
-  ALLOCATE (y, float, 2*Npts);
-  ALLOCATE (z, float, 2*Npts);
+  ALLOCATE (x,  float, 2*Npts);
+  ALLOCATE (y,  float, 2*Npts);
+  ALLOCATE (z,  float, 2*Npts);
   ALLOCATE (dz, float, 2*Npts);
 
-  for (N = j = 0; j < ny; j++) {
+  N = 0;
+  for (j = 0; j < ny; j++) {
     V = (float *)(buf[0].matrix.buffer) + (j+sy)*buf[0].matrix.Naxis[0] + sx; 
     for (i = 0; i < nx; i++, V++, N++) {
-      dx = i + sx;
-      dy = j + sy;
+      x[N] = i + sx;
+      y[N] = j + sy;
       z[N] = *V;
       dz[N] = 1.0 / *V;  /* temporarily no gain (or, gain = 1) */
-      x[N] = dx;
-      y[N] = dy;
     }
   }
@@ -97,36 +66,235 @@
   /* make initial guesses on parameters */
   /* fitting X^2 / (2*Sx), Y^2 / (2*Sy) */
-  get_aperture_stats (&buf[0].matrix, (int)(sx + 0.5*nx), (int)(sy + 0.5*ny), 15, 2, 65000);
   par[0] = atof (get_variable ("Xg"));
   par[1] = atof (get_variable ("Yg"));
-  par[2] = SQ (atof (get_variable ("SXg")) / 2.355);
-  par[3] = SQ (atof (get_variable ("SYg")) / 2.355);
-  par[4] = 0;
-  par[5] = atof (get_variable ("Zcg")) / 15.0;
-  /* par[5] is peak intensity, Zcg is total flux, scale down some */
+  par[2] = 2.35 * sqrt(2.0) / atof (get_variable ("SXg"));
+  par[3] = 2.35 * sqrt(2.0) / atof (get_variable ("SYg"));
+  par[4] = 0.0;
+  par[5] = atof (get_variable ("Zpk"));
   par[6] = atof (get_variable ("Sg"));
 
-  /* soften the errors */
-  for (i = 0; i < Npts; i++) {
-    double tmp1;
-    tmp1 = fitfunc (x[i], y[i], par, Npar, (float *) NULL);
-    if (!finite (tmp1)) { 
-      fprintf (stderr, "nan for tmp @ %d (%f %f %f)\n", i, x[i], y[i], z[i]); 
-    } else {
-      DZ = DFact * fabs (z[i] - tmp1);
-      DZ2 = DFact * fabs (z[i] - tmp1);
-      dz[i] *= 1 / (dz[i]*DZ + 1);  /* dz[i] = 1 / (DZ + 1/dz[i]) */
+  /* run fit routine */
+  ochisq = mrq2dinit (x, y, z, dz, Npts, par, Npar, fgaussTD, VERBOSE);
+  dchisq = ochisq;
+
+  for (i = 0; (i < 20) && ((dchisq <= 0.0) || (dchisq > 0.1*(Npts - Npar))); i++) {
+    chisq = mrq2dmin (x, y, z, dz, Npts, par, Npar, fgaussTD, VERBOSE);
+    dchisq = ochisq - chisq;
+    ochisq = chisq;
+    if (VERBOSE) fprintf (stderr, "dchisq: %f, Ndof: %d\n", dchisq, Npts - Npar);
+  }  
+
+  /** create output image **/
+  if (Save) {
+    Buffer *out;
+    float *Vi, *Vo, vr, vf, *dpar;
+
+    if ((out = SelectBuffer ("out",   ANYBUFFER, TRUE)) == NULL) return (FALSE);
+    ALLOCATE (dpar, float, 2*Npar);
+  
+    free (out[0].header.buffer);
+    free (out[0].matrix.buffer);
+    strcpy (out[0].file, "(empty)");
+    out[0].header.bitpix = -32;
+    out[0].header.bscale = 1.0;
+    out[0].header.bzero  = 0.0;
+    out[0].header.unsign = FALSE;
+    out[0].header.Naxes = 2;
+    out[0].header.Naxis[0] = 2*nx;
+    out[0].header.Naxis[1] = 2*ny;
+    CreateBuffer (out);
+
+    /* four panels: 1) raw image. 2) fit  3) raw - fit   4) ?? */
+    Vi = (float *)buf[0].matrix.buffer;
+    Vo = (float *)out[0].matrix.buffer;
+    for (j = 0; j < ny; j++) {
+      for (i = 0; i < nx; i++) {
+	vf = fgaussTD ((float)(i+sx), (float)(j+sy), par, Npar, dpar);
+	vr = Vi[(i+sx)+(j+sy)*Nx];
+	Vo[(i   )+(j   )*2*nx] = vr;
+	Vo[(i+nx)+(j   )*2*nx] = vf;
+	Vo[(i   )+(j+ny)*2*nx] = vr - vf;
+	Vo[(i+nx)+(j+ny)*2*nx] = 0;
+      }
     }
-  }
-  /* run fit routine */
-  chisq = mrq2dinit (x, y, z, dz, Npts, par, Npar, fitfunc);
-  done = FALSE;
-  for (i = 0; (i < 30) && !done; i++) {
-    nchisq = mrq2dmin (x, y, z, dz, Npts, par, Npar, fitfunc);
-    if (chisq - nchisq < 0.1) done = TRUE;
-    if (nchisq > 0) chisq = nchisq;
-  }  
-  covar = mrq2dcovar (Npar);
+    free (dpar);
+  }
+
+  /* parameter renormalize */
+  par[2] = 2.35*sqrt(2.0) / par[2];
+  par[3] = 2.35*sqrt(2.0) / par[3];
+  for (i = 0; i < Npar; i++) {
+    sprintf (line, "PAR%d", i);
+    set_variable (line, (double) par[i]);
+    if (VERBOSE) fprintf (stderr, "%f ", par[i]);
+  }
+  if (VERBOSE) fprintf (stderr, "  %f\n", chisq/Npts);
+
+  free (par);
+  free (x);
+  free (y);
+  free (z);
+  free (dz);
+
   mrq2dfree (Npar);
+  return (TRUE);
+
+range:
+  fprintf (stderr, "region out of range\n");
+  return (FALSE);
+}
+
+/* pars: x, y, sx, sy, sxy, I, sky */
+float fgaussTD (float x, float y, float *par, int Npar, float *dpar) {
+
+  float X, Y, px, py;
+  float z, r, q, f;
+
+  X = x - par[0];
+  Y = y - par[1];
+  
+  px = par[2]*X;
+  py = par[3]*Y;
+
+  z = 0.5*SQ(px) + 0.5*SQ(py) + par[4]*X*Y;
+  r = exp (-z);
+  q = par[5]*r;
+  f = q + par[6];
+
+  dpar[0] = q*(2*px*par[2] + par[4]*Y);
+  dpar[1] = q*(2*py*par[3] + par[4]*X);
+  dpar[2] = -2*q*px*X;
+  dpar[3] = -2*q*py*Y;
+  dpar[4] = -q*X*Y;
+  dpar[5] = +r;
+  dpar[6] = +1;
+
+  return (f);
+}
+/* alternate for exp(-z) */
+/* E = 1.0 / (1 + f1*Z + f2*(0.5*Z*Z + 0.1666666*Z*Z*Z)); */  /* ~ exp (-Z) */
+/* E = 1.0 / (1 +    Z +    (0.5*Z*Z + 0.1666666*Z*Z*Z)); */  /* ~ exp (-Z) */
+
+# if (0)
+/* pars: x, y, sx, sy, sxy, I, sky */
+float fgalaxyTD (float x, float y, float *par, int Npar, float *dpar) {
+
+  float X, Y, Z, E, F, q, R, f, p2, p3;
+
+  X = x - par[0];
+  Y = y - par[1];
+  
+  p2 = X / par[2];
+  p3 = Y / par[3];
+
+  Z = sqrt (0.5*p2*X + X*Y*par[4] + 0.5*p3*Y);                 /* R */
+  E = 1.0 / (1 + Z);   
+
+  q = par[5] * E;
+  R = q*E;
+  F = 0.5 / Z;
+  
+  f = q + par[6];
+
+  dpar[0] = F*R*(p2 + par[4]*Y);
+  dpar[1] = F*R*(p3 + par[4]*X);
+  dpar[2] = F*0.5*R*p2*p2;
+  dpar[3] = F*0.5*R*p3*p3;
+  dpar[4] = -R*X*Y*F;
+    
+  dpar[5] = E;
+  dpar[6] = 1;
+  return (f);
+}
+
+/* pars: x, y, sx, sy, sxy, I, sky */
+float fbarTD (float x, float y, float *par, int Npar, float *dpar) {
+
+  float X, Y, Z, E, F, q, R, f, p2, p3;
+
+  X = x - par[0];
+  Y = y - par[1];
+  
+  p2 = X / par[2];
+  p3 = Y / par[3];
+
+  Z = 0.5*p2*X + X*Y*par[4] + 0.5*p3*Y;                 /* R */
+  E = 1.0 / (1 + Z*Z*Z);   
+
+  q = par[5] * E;
+  F = 3*Z*Z;
+  R = q*E*F;
+  
+  f = q + par[6];
+
+  dpar[0] = R*(p2 + par[4]*Y);
+  dpar[1] = R*(p3 + par[4]*X);
+  dpar[2] = 0.5*R*p2*p2;
+  dpar[3] = 0.5*R*p3*p3;
+  dpar[4] = -R*X*Y;
+    
+  dpar[5] = E;
+  dpar[6] = 1;
+  return (f);
+}
+
+/* convert from x,y to major,minor */
+void fix_ellipsegauss_pars (float *par, int Npar) {
+
+  float p2, p4, angle, t1, t2, tmp, area;
+
+  /* par[0], par[1] = Xo, Yo - stay the same */
+
+  p2 = 1/par[2];
+  p4 = 1/par[3];
+
+  angle = 0.5 * atan2 (-2*par[4], p4 - p2); 
+
+  tmp = sqrt (SQ(p2 - p4) + 4*SQ(par[4]));
+  t1 = (p2 + p4 + tmp) / 2;
+  t2 = t1 - tmp;
+
+  par[2] = 2.35482*sqrt(1/t2);
+  par[3] = 2.35482*sqrt(1/t1);
+  par[4] = DEG_RAD * angle;
+
+  area = 2*M_PI/sqrt(t1*t2);
+
+  par[5] *= area;
+
+}
+# endif
+
+/***  options for later
+
+  Subtract = FALSE;
+  if ((N = get_argument (argc, argv, "-sub"))) {
+    remove_argument (N, &argc, argv);
+    Subtract  = TRUE;
+  }
+
+  DFact = 1;
+  if ((N = get_argument (argc, argv, "-D"))) {
+    remove_argument (N, &argc, argv);
+    DFact  = atof(argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+
+  fitfunc = fgaussTD;
+  if ((N = get_argument (argc, argv, "-gal"))) {
+    remove_argument (N, &argc, argv);
+    fitfunc = fgalaxyTD; 
+  }
+  if ((N = get_argument (argc, argv, "-bar"))) {
+    remove_argument (N, &argc, argv);
+    fitfunc = fbarTD; 
+  }
+
+
+  f1 = 1;
+  if ((c = get_variable ("BETA1")) != (char *) NULL) f1 = atof (c);
+
+  f2 = 1;
+  if ((c = get_variable ("BETA2")) != (char *) NULL) f2 = atof (c);
 
   if (Subtract) {
@@ -144,190 +312,3 @@
   }
 
-  fix_ellipsegauss_pars (par, Npar); 
-
-  for (i = 0; i < Npar; i++) {
-    sprintf (line, "PAR%d", i);
-    set_variable (line, (double) par[i]);
-    fprintf (stderr, "%f ", par[i]);
-  }
-  fprintf (stderr, "  %f\n", nchisq/(1.0*Npts));
-
-  free (par);
-  free (x);
-  free (y);
-  free (z);
-  free (dz);
-
-  return (TRUE);
-
-}
-
-/* pars: x, y, sx, sy, sxy, I, sky */
-float fgaussTD (float x, float y, float *par, int Npar, float *dpar) {
-
-  float X, Y, Z, E, F, q, R, f, p2, p3;
-
-  X = x - par[0];
-  Y = y - par[1];
-  
-  p2 = X / par[2];
-  p3 = Y / par[3];
-
-  Z = 0.5*p2*X + X*Y*par[4] + 0.5*p3*Y;                 /* R^2 */
-  /* E = 1.0 / (1 + f1*Z + f2*(0.5*Z*Z + 0.1666666*Z*Z*Z)); */  /* ~ exp (-Z) */
-  E = 1.0 / (1 + Z + (0.5*Z*Z + 0.1666666*Z*Z*Z));   /* ~ exp (-Z) */
-  F = (f1 + f2*(Z + 0.5*Z*Z));
-
-  q = par[5] * E;
-  R = q*E*F;
-  
-  f = q + par[6];
-
-  if (dpar != (float *) NULL) {
-    dpar[0] = R*(p2 + par[4]*Y);
-    dpar[1] = R*(p3 + par[4]*X);
-    dpar[2] = 0.5*R*p2*p2;
-    dpar[3] = 0.5*R*p3*p3;
-    dpar[4] = -R*X*Y;
-    
-    dpar[5] = E;
-    dpar[6] = 1;
-  }
-
-  /*
-  if ((fabs(X) < 2) && (fabs(Y) < 2)) {
-    int i;
-
-    for (i = 0; i < Npar; i++) {
-      fprintf (stderr, "%d  %f  %f\n", i, par[i], dpar[i]);
-    }
-    fprintf (stderr, "func: (%f, %f)  %f\n", X, Y, f);
-  }
-  */
-
-  if (!finite (f)) {
-    fprintf (stderr, "nan for fgaussTD\n");
-  }
-
-  return (f);
-
-}
-
-/* pars: x, y, sx, sy, sxy, I, sky */
-float fgalaxyTD (float x, float y, float *par, int Npar, float *dpar) {
-
-  float X, Y, Z, E, F, q, R, f, p2, p3;
-
-  X = x - par[0];
-  Y = y - par[1];
-  
-  p2 = X / par[2];
-  p3 = Y / par[3];
-
-  Z = sqrt (0.5*p2*X + X*Y*par[4] + 0.5*p3*Y);                 /* R */
-  E = 1.0 / (1 + Z);   
-
-  q = par[5] * E;
-  R = q*E;
-  F = 0.5 / Z;
-  
-  f = q + par[6];
-
-  if (dpar != (float *) NULL) {
-    dpar[0] = F*R*(p2 + par[4]*Y);
-    dpar[1] = F*R*(p3 + par[4]*X);
-    dpar[2] = F*0.5*R*p2*p2;
-    dpar[3] = F*0.5*R*p3*p3;
-    dpar[4] = -R*X*Y*F;
-    
-    dpar[5] = E;
-    dpar[6] = 1;
-  }
-
-  /*
-  if ((fabs(X) < 2) && (fabs(Y) < 2)) {
-    int i;
-
-    for (i = 0; i < Npar; i++) {
-      fprintf (stderr, "%d  %f  %f\n", i, par[i], dpar[i]);
-    }
-    fprintf (stderr, "func: (%f, %f)  %f\n", X, Y, f);
-  }
-  */
-  return (f);
-
-}
-
-
-/* pars: x, y, sx, sy, sxy, I, sky */
-float fbarTD (float x, float y, float *par, int Npar, float *dpar) {
-
-  float X, Y, Z, E, F, q, R, f, p2, p3;
-
-  X = x - par[0];
-  Y = y - par[1];
-  
-  p2 = X / par[2];
-  p3 = Y / par[3];
-
-  Z = 0.5*p2*X + X*Y*par[4] + 0.5*p3*Y;                 /* R */
-  E = 1.0 / (1 + Z*Z*Z);   
-
-  q = par[5] * E;
-  F = 3*Z*Z;
-  R = q*E*F;
-  
-  f = q + par[6];
-
-  if (dpar != (float *) NULL) {
-    dpar[0] = R*(p2 + par[4]*Y);
-    dpar[1] = R*(p3 + par[4]*X);
-    dpar[2] = 0.5*R*p2*p2;
-    dpar[3] = 0.5*R*p3*p3;
-    dpar[4] = -R*X*Y;
-    
-    dpar[5] = E;
-    dpar[6] = 1;
-  }
-
-  /*
-  if ((fabs(X) < 2) && (fabs(Y) < 2)) {
-    int i;
-
-    for (i = 0; i < Npar; i++) {
-      fprintf (stderr, "%d  %f  %f\n", i, par[i], dpar[i]);
-    }
-    fprintf (stderr, "func: (%f, %f)  %f\n", X, Y, f);
-  }
-  */
-  return (f);
-
-}
-
-
-void fix_ellipsegauss_pars (float *par, int Npar) {
-
-  float p2, p4, angle, t1, t2, tmp, area;
-
-  /* par[0], par[1] = Xo, Yo - stay the same */
-
-  p2 = 1/par[2];
-  p4 = 1/par[3];
-
-  angle = 0.5 * atan2 (-2*par[4], p4 - p2); 
-
-  tmp = sqrt (SQ(p2 - p4) + 4*SQ(par[4]));
-  t1 = (p2 + p4 + tmp) / 2;
-  t2 = t1 - tmp;
-
-  par[2] = 2.35482*sqrt(1/t2);
-  par[3] = 2.35482*sqrt(1/t1);
-  par[4] = DEG_RAD * angle;
-
-  area = 2*M_PI/sqrt(t1*t2);
-
-  par[5] *= area;
-
-}
-
-
+***/
Index: trunk/Ohana/src/opihi/cmd.astro/init.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/init.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/init.c	(revision 2843)
@@ -29,5 +29,4 @@
 int spec		    PROTO((int, char **));
 int star		    PROTO((int, char **));
-int testfit		    PROTO((int, char **));
 int times		    PROTO((int, char **));
 int transform		    PROTO((int, char **));
Index: trunk/Ohana/src/opihi/cmd.astro/medianmap.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/medianmap.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/medianmap.c	(revision 2843)
@@ -12,5 +12,5 @@
 
   Ignore = FALSE;
-  if (N = get_argument (argc, argv, "-ignore")) {
+  if ((N = get_argument (argc, argv, "-ignore"))) {
     Ignore = TRUE;
     remove_argument (N, &argc, argv);
@@ -21,5 +21,5 @@
   min = 0.45;
   max = 0.55;
-  if (N = get_argument (argc, argv, "-range")) {
+  if ((N = get_argument (argc, argv, "-range"))) {
     remove_argument (N, &argc, argv);
     min  = atof(argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/mkgauss.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/mkgauss.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/mkgauss.c	(revision 2843)
@@ -12,5 +12,5 @@
 
   Xo = Yo = 0;
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     Xo = atof (argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/objload.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/objload.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/objload.c	(revision 2843)
@@ -12,5 +12,5 @@
   
   Nimage = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nimage = atof (argv[N]);
@@ -20,5 +20,5 @@
 
   Type = 0;
-  if (N = get_argument (argc, argv, "-t")) {
+  if ((N = get_argument (argc, argv, "-t"))) {
     remove_argument (N, &argc, argv);
     Type = atof (argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/outline2.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/outline2.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/outline2.c	(revision 2843)
@@ -351,4 +351,4 @@
   free (buffer);
   free (line);
-  
+  return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.astro/region.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/region.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/region.c	(revision 2843)
@@ -13,20 +13,20 @@
   if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
 
-  if (N = get_argument (argc, argv, "-ew")) {
+  if ((N = get_argument (argc, argv, "-ew"))) {
     remove_argument (N, &argc, argv);
     graphmode.flipeast = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "+ew")) {
+  if ((N = get_argument (argc, argv, "+ew"))) {
     remove_argument (N, &argc, argv);
     graphmode.flipeast = FALSE;
   }
 
-  if (N = get_argument (argc, argv, "-ns")) {
+  if ((N = get_argument (argc, argv, "-ns"))) {
     remove_argument (N, &argc, argv);
     graphmode.flipnorth = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "+ns")) {
+  if ((N = get_argument (argc, argv, "+ns"))) {
     remove_argument (N, &argc, argv);
     graphmode.flipnorth = FALSE;
Index: trunk/Ohana/src/opihi/cmd.astro/rotcurve.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/rotcurve.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/rotcurve.c	(revision 2843)
@@ -14,5 +14,5 @@
 
   min = -1000;
-  if (N = get_argument (argc, argv, "-min")) {
+  if ((N = get_argument (argc, argv, "-min"))) {
     remove_argument (N, &argc, argv);
     min = atof (argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/sexigesimal.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/sexigesimal.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/sexigesimal.c	(revision 2843)
@@ -8,9 +8,9 @@
 
   HMS = TRUE;
-  if (N = get_argument (argc, argv, "-hms")) {
+  if ((N = get_argument (argc, argv, "-hms"))) {
     HMS = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-hh")) {
+  if ((N = get_argument (argc, argv, "-hh"))) {
     HMS = FALSE;
     remove_argument (N, &argc, argv);
Index: trunk/Ohana/src/opihi/cmd.astro/spec.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/spec.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/spec.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   Nlong = 31;
-  if (N = get_argument (argc, argv, "-Nlong")) {
+  if ((N = get_argument (argc, argv, "-Nlong"))) {
     remove_argument (N, &argc, argv);
     Nlong  = 0.5*atof(argv[N]);
@@ -19,5 +19,5 @@
   
   Ngap = 15;
-  if (N = get_argument (argc, argv, "-Ngap")) {
+  if ((N = get_argument (argc, argv, "-Ngap"))) {
     remove_argument (N, &argc, argv);
     Ngap  = 0.5*atof(argv[N]);
@@ -27,5 +27,5 @@
   
   Nrow = 1;
-  if (N = get_argument (argc, argv, "-Nrow")) {
+  if ((N = get_argument (argc, argv, "-Nrow"))) {
     remove_argument (N, &argc, argv);
     Nrow  = atof(argv[N]);
Index: trunk/Ohana/src/opihi/cmd.astro/star.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/star.c	(revision 2833)
+++ trunk/Ohana/src/opihi/cmd.astro/star.c	(revision 2843)
@@ -8,5 +8,5 @@
 
   Nborder = 3;
-  if (N = get_argument (argc, argv, "-border")) {
+  if ((N = get_argument (argc, argv, "-border"))) {
     remove_argument (N, &argc, argv);
     Nborder  = atof(argv[N]);
@@ -16,5 +16,5 @@
   
   max = 60000;
-  if (N = get_argument (argc, argv, "-sat")) {
+  if ((N = get_argument (argc, argv, "-sat"))) {
     remove_argument (N, &argc, argv);
     max  = atof(argv[N]);
