Index: /trunk/Ohana/src/opihi/cmd.astro/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/Makefile	(revision 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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 2842)
+++ /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]);
Index: /trunk/Ohana/src/opihi/cmd.basic/break.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/break.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.basic/break.c	(revision 2843)
@@ -5,5 +5,5 @@
   int N, value;
 
-  if (N = get_argument (argc, argv, "-auto")) {
+  if ((N = get_argument (argc, argv, "-auto"))) {
     remove_argument (N, &argc, argv);
     value = -1;
Index: /trunk/Ohana/src/opihi/cmd.basic/list.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/list.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.basic/list.c	(revision 2843)
@@ -13,5 +13,5 @@
 
   RunCommand = FALSE;
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     Cmd = strcreate (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.basic/local.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/local.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.basic/local.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   STATIC = FALSE;
-  if (N = get_argument (argc, argv, "-static")) {
+  if ((N = get_argument (argc, argv, "-static"))) {
     remove_argument (N, &argc, argv);
     STATIC = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.basic/run_if.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/run_if.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.basic/run_if.c	(revision 2843)
@@ -5,5 +5,5 @@
 
   int ThisList, depth, done, status, BreakOnTrue;
-  int logic, equals;
+  int logic;
   char *input, *outline, *val;
   int nloop, size;
@@ -102,8 +102,4 @@
   }
   return (TRUE);
-
- syntax:
-  fprintf (stderr, "syntax error in if-statement\n");
-  return (FALSE);
 }
 
Index: /trunk/Ohana/src/opihi/cmd.basic/sprintf.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/sprintf.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.basic/sprintf.c	(revision 2843)
@@ -6,5 +6,5 @@
 int sprintf_opihi (int argc, char **argv) {
 
-  int i, Nchar;
+  int i;
   char line[NCHAR], tmp[NCHAR], fmt[NCHAR];
   char *p1, *p2, *q;
Index: /trunk/Ohana/src/opihi/cmd.data/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 2843)
@@ -48,4 +48,5 @@
 $(SDIR)/grid.$(ARCH).o		\
 $(SDIR)/gridify.$(ARCH).o       \
+$(SDIR)/ungridify.$(ARCH).o     \
 $(SDIR)/histogram.$(ARCH).o	\
 $(SDIR)/imcut.$(ARCH).o	 	\
@@ -106,4 +107,5 @@
 $(SDIR)/vbin.$(ARCH).o		   \
 $(SDIR)/vclip.$(ARCH).o		   \
+$(SDIR)/vgauss.$(ARCH).o           \
 $(SDIR)/vgrid.$(ARCH).o		   \
 $(SDIR)/vload.$(ARCH).o		   \
Index: /trunk/Ohana/src/opihi/cmd.data/accum.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/accum.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/accum.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   Normalize = FALSE;
-  if (N = get_argument (argc, argv, "-norm")) {
+  if ((N = get_argument (argc, argv, "-norm"))) {
     remove_argument (N, &argc, argv);
     Normalize = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/box.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/box.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/box.c	(revision 2843)
@@ -9,5 +9,5 @@
   
   strcpy (Ticks, "2222");
-  if (N = get_argument (argc, argv, "-ticks")) {
+  if ((N = get_argument (argc, argv, "-ticks"))) {
     remove_argument (N, &argc, argv);
     strcpy (Ticks, argv[N]);
@@ -20,5 +20,5 @@
   
   strcpy (Labels, "2222");
-  if (N = get_argument (argc, argv, "-labels")) {
+  if ((N = get_argument (argc, argv, "-labels"))) {
     remove_argument (N, &argc, argv);
     strcpy (Labels, argv[N]);
@@ -31,5 +31,5 @@
 
   strcpy (Axis, "2222");
-  if (N = get_argument (argc, argv, "-axis")) {
+  if ((N = get_argument (argc, argv, "-axis"))) {
     remove_argument (N, &argc, argv);
     strcpy (Axis, argv[N]);
@@ -42,5 +42,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.data/center.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/center.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/center.c	(revision 2843)
@@ -9,5 +9,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]);
Index: /trunk/Ohana/src/opihi/cmd.data/clear.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/clear.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/clear.c	(revision 2843)
@@ -7,5 +7,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]);
@@ -15,5 +15,5 @@
 
   ClearSection = FALSE;
-  if (N = get_argument (argc, argv, "-s")) {
+  if ((N = get_argument (argc, argv, "-s"))) {
     remove_argument (N, &argc, argv);
     ClearSection = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/clip.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/clip.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/clip.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   DO_NAN = FALSE;
-  if (N = get_argument (argc, argv, "-nan")) {
+  if ((N = get_argument (argc, argv, "-nan"))) {
     remove_argument (N, &argc, argv);
     nan_val  = atof(argv[N]);
@@ -17,5 +17,5 @@
 
   DO_INF = FALSE;
-  if (N = get_argument (argc, argv, "-inf")) {
+  if ((N = get_argument (argc, argv, "-inf"))) {
     remove_argument (N, &argc, argv);
     inf_val  = atof(argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/create.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/create.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/create.c	(revision 2843)
@@ -9,5 +9,5 @@
   Vector *vec;
   
-  if (N = get_argument (argc, argv, "-image")) {
+  if ((N = get_argument (argc, argv, "-image"))) {
     remove_argument (N, &argc, argv);
     return (imcreate (argc, argv));
Index: /trunk/Ohana/src/opihi/cmd.data/cursor.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 2843)
@@ -4,20 +4,21 @@
 
   char buffer[40], string[20], key;
-  int i, N, Nsource, Source, IsImage, oldsignal;
+  int i, N, Nsource, Source, IsImage;
   double X, Y, R, D, Z;
+  void *oldsignal;
   Graphdata graphmode;
   Buffer *buf;
 
   Nsource = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nsource = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-g")) {
+  if ((N = get_argument (argc, argv, "-g"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (FALSE);
   }  
-  if (N = get_argument (argc, argv, "-i")) {
+  if ((N = get_argument (argc, argv, "-i"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (TRUE);
@@ -44,5 +45,5 @@
   write (Source, string, 4); /* ask Source to look for the keystrokes */
   
-  oldsignal = (int) signal (SIGINT, handle_interrupt);
+  oldsignal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
   Z = -1.0;
@@ -86,5 +87,5 @@
   }
 
-  signal (SIGINT, (void *) oldsignal);
+  signal (SIGINT, oldsignal);
   write (Source, "NCUR", 4); /* ask Source to look for the keystrokes */
   return (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/cut.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/cut.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/cut.c	(revision 2843)
@@ -12,9 +12,9 @@
 
   Mode = SUM;
-  if (N = get_argument (argc, argv, "-median")) {
+  if ((N = get_argument (argc, argv, "-median"))) {
     remove_argument (N, &argc, argv);
     Mode = MEDIAN;
   }
-  if (N = get_argument (argc, argv, "-mean")) {
+  if ((N = get_argument (argc, argv, "-mean"))) {
     remove_argument (N, &argc, argv);
     Mode = MEAN;
Index: /trunk/Ohana/src/opihi/cmd.data/delete.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/delete.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/delete.c	(revision 2843)
@@ -6,9 +6,9 @@
 
   Quiet = FALSE;
-  if (N = get_argument (argc, argv, "-q")) {
+  if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/device.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/device.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/device.c	(revision 2843)
@@ -7,14 +7,14 @@
 
   Nsource = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nsource = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-g")) {
+  if ((N = get_argument (argc, argv, "-g"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (FALSE);
   }  
-  if (N = get_argument (argc, argv, "-i")) {
+  if ((N = get_argument (argc, argv, "-i"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/erase.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/erase.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/erase.c	(revision 2843)
@@ -8,5 +8,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]);
Index: /trunk/Ohana/src/opihi/cmd.data/fft2d.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   isign = 1;
-  if (N = get_argument (argc, argv, "-inverse")) {
+  if ((N = get_argument (argc, argv, "-inverse"))) {
     remove_argument (N, &argc, argv);
     isign = -1;
Index: /trunk/Ohana/src/opihi/cmd.data/fit.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/fit.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/fit.c	(revision 2843)
@@ -11,9 +11,9 @@
 
   Quiet = FALSE;
-  if (N = get_argument (argc, argv, "-q")) {
+  if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
@@ -21,5 +21,5 @@
 
   Weight = FALSE;
-  if (N = get_argument (argc, argv, "-dy")) {
+  if ((N = get_argument (argc, argv, "-dy"))) {
     remove_argument (N, &argc, argv);
     if ((dyvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
Index: /trunk/Ohana/src/opihi/cmd.data/fit2d.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/fit2d.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/fit2d.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   Weight = FALSE;
-  if (N = get_argument (argc, argv, "-dy")) {
+  if ((N = get_argument (argc, argv, "-dy"))) {
     remove_argument (N, &argc, argv);
     if ((dyvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
Index: /trunk/Ohana/src/opihi/cmd.data/grid.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/grid.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/grid.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]);
@@ -19,5 +19,5 @@
   MajorTick = TRUE;
   MinorTick = FALSE;
-  if (N = get_argument (argc, argv, "-all")) {
+  if ((N = get_argument (argc, argv, "-all"))) {
     remove_argument (N, &argc, argv);
     MinorTick = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/gridify.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   if (argc != 11) {
-    fprintf (stderr, "USAGE: vectobuf x y z buffer Xmin Xmax dX Ymin Ymax dY\n");
+    fprintf (stderr, "USAGE: gridify x y z buffer Xmin Xmax dX Ymin Ymax dY\n");
     return (FALSE);
   }
Index: /trunk/Ohana/src/opihi/cmd.data/imcut.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/imcut.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/imcut.c	(revision 2843)
@@ -14,5 +14,5 @@
   }
 
-  if ((buf  = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) goto usage;
+  if ((buf  = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) goto missed;
   if ((xvec = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) goto usage;
   if ((yvec = SelectVector (argv[3], ANYVECTOR, TRUE)) == NULL) goto usage;
Index: /trunk/Ohana/src/opihi/cmd.data/imhist.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/imhist.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/imhist.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   min = max = 0.0;
-  if (N = get_argument (argc, argv, "-range")) {
+  if ((N = get_argument (argc, argv, "-range"))) {
     remove_argument (N, &argc, argv);
     min = atof (argv[N]);
@@ -21,5 +21,5 @@
   sx = sy = 0.0;
   nx = ny = 0.0;
-  if (N = get_argument (argc, argv, "-region")) {
+  if ((N = get_argument (argc, argv, "-region"))) {
     remove_argument (N, &argc, argv);
     sx = atof (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/imsmooth.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/imsmooth.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/imsmooth.c	(revision 2843)
@@ -63,4 +63,5 @@
   }
 
+  free (temp);
   free (gaussnorm);
   return (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/init.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/init.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/init.c	(revision 2843)
@@ -29,4 +29,5 @@
 int grid             PROTO((int, char **));
 int gridify          PROTO((int, char **));
+int ungridify        PROTO((int, char **));
 int histogram        PROTO((int, char **));
 int imcut            PROTO((int, char **));
@@ -88,4 +89,5 @@
 int vect_select      PROTO((int, char **));
 int vgrid            PROTO((int, char **));
+int vgauss           PROTO((int, char **));
 int vload            PROTO((int, char **));
 int vstat            PROTO((int, char **));
@@ -126,4 +128,5 @@
   {"grid",    	   grid,	     "plot cartesian grid"},
   {"gridify",      gridify,	     "convert vector triplet to buffer"},
+  {"ungridify",    ungridify,        "convert buffer region to vector triplet"},
   {"header",       header,	     "print buffer header"},
   {"histogram",    histogram,	     "generate histogram from vector"},
@@ -184,5 +187,6 @@
   {"vclip",	   vclip,	     "clip values in a vector to be within a range"},
   {"select",	   vect_select,	     "selective vector assignment"},
-  {"vgrid",        vgrid,	     "get info from imreg database"},
+  {"vgauss",       vgauss,	     ""},
+  {"vgrid",        vgrid,	     ""},
   {"vload",        vload,	     "load vectors on Kii"},
   {"vstat",        vstat,	     "get info from imreg database"},
Index: /trunk/Ohana/src/opihi/cmd.data/integrate.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/integrate.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/integrate.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     VERBOSE = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/jpeg.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/jpeg.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/jpeg.c	(revision 2843)
@@ -6,5 +6,5 @@
   int N, Source, Nsource, IsImage;
   
-  if (N = get_argument (argc, argv, "--help")) {
+  if ((N = get_argument (argc, argv, "--help"))) {
     fprintf (stderr, "USAGE: jpeg [-name file] [-g | -i] [-n device] [-ppm]\n");
     return (FALSE);
@@ -13,5 +13,5 @@
   /* image type */
   strcpy (type, "PNGF");
-  if (N = get_argument (argc, argv, "-ppm")) {
+  if ((N = get_argument (argc, argv, "-ppm"))) {
     remove_argument (N, &argc, argv);
     strcpy (type, "PPMF");
@@ -20,5 +20,5 @@
   /* file name */
   filename[0] = 0;
-  if (N = get_argument (argc, argv, "-name")) {
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     strcpy (filename, argv[N]);
@@ -28,14 +28,14 @@
   /* display source */
   Nsource = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nsource = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-g")) {
+  if ((N = get_argument (argc, argv, "-g"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (FALSE);
   }  
-  if (N = get_argument (argc, argv, "-i")) {
+  if ((N = get_argument (argc, argv, "-i"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/keyword.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/keyword.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/keyword.c	(revision 2843)
@@ -12,5 +12,5 @@
 
   asfloat = FALSE;
-  if (N = get_argument (argc, argv, "-f")) {
+  if ((N = get_argument (argc, argv, "-f"))) {
     remove_argument (N, &argc, argv);
     asfloat = TRUE;
@@ -18,5 +18,5 @@
   
   ascomment = FALSE;
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     ascomment = TRUE;
@@ -24,5 +24,5 @@
   
   delete = FALSE;
-  if (N = get_argument (argc, argv, "-d")) {
+  if ((N = get_argument (argc, argv, "-d"))) {
     remove_argument (N, &argc, argv);
     delete = TRUE;
@@ -31,5 +31,5 @@
   /* return TRUE for missing keyword if soft */
   soft = FALSE;
-  if (N = get_argument (argc, argv, "-soft")) {
+  if ((N = get_argument (argc, argv, "-soft"))) {
     remove_argument (N, &argc, argv);
     soft = TRUE;
@@ -38,5 +38,5 @@
   /* identify write modes */
   Wmode = NONE;
-  if (N = get_argument (argc, argv, "-w")) {
+  if ((N = get_argument (argc, argv, "-w"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
@@ -44,5 +44,5 @@
     Wmode = STRING;
   }
-  if (N = get_argument (argc, argv, "-wf")) {
+  if ((N = get_argument (argc, argv, "-wf"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
@@ -50,5 +50,5 @@
     Wmode = FLOAT;
   }
-  if (N = get_argument (argc, argv, "-wd")) {
+  if ((N = get_argument (argc, argv, "-wd"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
@@ -56,5 +56,5 @@
     Wmode = INT;
   }
-  if (N = get_argument (argc, argv, "-wc")) {
+  if ((N = get_argument (argc, argv, "-wc"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
@@ -62,5 +62,5 @@
     Wmode = KEYCOMMENT;
   }
-  if (N = get_argument (argc, argv, "-ws")) {
+  if ((N = get_argument (argc, argv, "-ws"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
@@ -68,5 +68,5 @@
     Wmode = COMMENT;
   }
-  if (N = get_argument (argc, argv, "-wb")) {
+  if ((N = get_argument (argc, argv, "-wb"))) {
     remove_argument (N, &argc, argv);
     strcpy (line, argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/labels.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/labels.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/labels.c	(revision 2843)
@@ -30,5 +30,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-fn")) {
+  if ((N = get_argument (argc, argv, "-fn"))) {
     remove_argument (N, &argc, argv);
     strcpy (name, argv[N]);
@@ -43,5 +43,5 @@
   } 
 
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 0);
@@ -49,5 +49,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-y")) {
+  if ((N = get_argument (argc, argv, "-y"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 1);
@@ -55,5 +55,5 @@
   }
 
-  if (N = get_argument (argc, argv, "+x")) {
+  if ((N = get_argument (argc, argv, "+x"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 2);
@@ -61,5 +61,5 @@
   }
 
-  if (N = get_argument (argc, argv, "+y")) {
+  if ((N = get_argument (argc, argv, "+y"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 3);
@@ -67,5 +67,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-ul")) {
+  if ((N = get_argument (argc, argv, "-ul"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 4);
@@ -73,5 +73,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-ur")) {
+  if ((N = get_argument (argc, argv, "-ur"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 5);
@@ -79,5 +79,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-ll")) {
+  if ((N = get_argument (argc, argv, "-ll"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 6);
@@ -85,5 +85,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-lr")) {
+  if ((N = get_argument (argc, argv, "-lr"))) {
     remove_argument (N, &argc, argv);
     SendLabel (argv[N], Xgraph, 7);
Index: /trunk/Ohana/src/opihi/cmd.data/limits.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/limits.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/limits.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   APPLY = FALSE;
-  if (N = get_argument (argc, argv, "-a")) {
+  if ((N = get_argument (argc, argv, "-a"))) {
     remove_argument (N, &argc, argv);
     APPLY = TRUE;
@@ -17,5 +17,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.data/line.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/line.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/line.c	(revision 2843)
@@ -9,5 +9,5 @@
   /* choose the appropriate graphing window */
   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]);
@@ -17,33 +17,33 @@
 
   /* evaluate various plotting options */
-  if (N = get_argument (argc, argv, "-lt")) {
+  if ((N = get_argument (argc, argv, "-lt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ltype = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-lw")) {
+  if ((N = get_argument (argc, argv, "-lw"))) {
     remove_argument (N, &argc, argv);
     graphmode.lweight = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-pt")) {
+  if ((N = get_argument (argc, argv, "-pt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ptype = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+eb")) {
+  if ((N = get_argument (argc, argv, "+eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = TRUE;
   }
-  if (N = get_argument (argc, argv, "-eb")) {
+  if ((N = get_argument (argc, argv, "-eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = FALSE;
   }
-  if (N = get_argument (argc, argv, "-sz")) {
+  if ((N = get_argument (argc, argv, "-sz"))) {
     remove_argument (N, &argc, argv);
     graphmode.size = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     graphmode.color = GetColor (argv[N]);
@@ -51,5 +51,5 @@
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     graphmode.style = atof(argv[N]);
@@ -59,20 +59,20 @@
   /* decide on error bars */
   dxm = dxp = dym = dyp = NULL;
-  if (N = get_argument (argc, argv, "-dx")) {
+  if ((N = get_argument (argc, argv, "-dx"))) {
     remove_argument (N, &argc, argv);
     if ((dxm = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+dx")) {
+  if ((N = get_argument (argc, argv, "+dx"))) {
     remove_argument (N, &argc, argv);
     if ((dxp = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-dy")) {
+  if ((N = get_argument (argc, argv, "-dy"))) {
     remove_argument (N, &argc, argv);
     if ((dym = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+dy")) {
+  if ((N = get_argument (argc, argv, "+dy"))) {
     remove_argument (N, &argc, argv);
     if ((dyp = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);
Index: /trunk/Ohana/src/opihi/cmd.data/list_header.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/list_header.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/list_header.c	(revision 2843)
@@ -10,5 +10,5 @@
 
   LOADHEAD = FALSE;
-  if (N = get_argument (argc, argv, "-w")) {
+  if ((N = get_argument (argc, argv, "-w"))) {
     remove_argument (N, &argc, argv);
     strcpy (filename, argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/load.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/load.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/load.c	(revision 2843)
@@ -14,5 +14,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]);
@@ -22,5 +22,5 @@
 
   ISCEL = FALSE;
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     ISCEL = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/plot.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 2843)
@@ -9,5 +9,5 @@
   /* choose the appropriate graphing window */
   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]);
@@ -17,33 +17,33 @@
 
   /* evaluate various plotting options */
-  if (N = get_argument (argc, argv, "-lt")) {
+  if ((N = get_argument (argc, argv, "-lt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ltype = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-lw")) {
+  if ((N = get_argument (argc, argv, "-lw"))) {
     remove_argument (N, &argc, argv);
     graphmode.lweight = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-pt")) {
+  if ((N = get_argument (argc, argv, "-pt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ptype = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+eb")) {
+  if ((N = get_argument (argc, argv, "+eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = TRUE;
   }
-  if (N = get_argument (argc, argv, "-eb")) {
+  if ((N = get_argument (argc, argv, "-eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = FALSE;
   }
-  if (N = get_argument (argc, argv, "-sz")) {
+  if ((N = get_argument (argc, argv, "-sz"))) {
     remove_argument (N, &argc, argv);
     graphmode.size = atof(argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     graphmode.color = GetColor (argv[N]);
@@ -51,5 +51,5 @@
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     graphmode.style = atof(argv[N]);
@@ -59,20 +59,20 @@
   /* decide on error bars */
   dxmvec = dxpvec = dymvec = dypvec = NULL;
-  if (N = get_argument (argc, argv, "-dx")) {
+  if ((N = get_argument (argc, argv, "-dx"))) {
     remove_argument (N, &argc, argv);
     if ((dxmvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+dx")) {
+  if ((N = get_argument (argc, argv, "+dx"))) {
     remove_argument (N, &argc, argv);
     if ((dxpvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-dy")) {
+  if ((N = get_argument (argc, argv, "-dy"))) {
     remove_argument (N, &argc, argv);
     if ((dymvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "+dy")) {
+  if ((N = get_argument (argc, argv, "+dy"))) {
     remove_argument (N, &argc, argv);
     if ((dypvec = SelectVector (argv[N], OLDVECTOR, TRUE)) == NULL) return (FALSE);    
Index: /trunk/Ohana/src/opihi/cmd.data/point.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/point.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/point.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 @@
   
   ISCEL = FALSE;
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     ISCEL = TRUE;
@@ -26,5 +26,5 @@
   
   ISPIX = FALSE;
-  if (N = get_argument (argc, argv, "-p")) {
+  if ((N = get_argument (argc, argv, "-p"))) {
     remove_argument (N, &argc, argv);
     ISPIX = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/pop.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/pop.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/pop.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   var = (char *) NULL;
-  if (N = get_argument (argc, argv, "-var")) {
+  if ((N = get_argument (argc, argv, "-var"))) {
     remove_argument (N, &argc, argv);
     var = strcreate (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/ps.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/ps.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/ps.c	(revision 2843)
@@ -6,5 +6,5 @@
   int N, Source, Nsource, RawImage, NoScale, IsImage;
   
-  if (N = get_argument (argc, argv, "--help")) {
+  if ((N = get_argument (argc, argv, "--help"))) {
     fprintf (stderr, "USAGE: ps [-name file.ps] [-g | -i] [-n device] [-raw] [-scale]\n");
     return (FALSE);
@@ -13,5 +13,5 @@
   /* raw image? */
   RawImage = FALSE;
-  if (N = get_argument (argc, argv, "-raw")) {
+  if ((N = get_argument (argc, argv, "-raw"))) {
     remove_argument (N, &argc, argv);
     RawImage = TRUE;
@@ -19,5 +19,5 @@
   /* scale image? */
   NoScale = FALSE;
-  if (N = get_argument (argc, argv, "-noscale")) {
+  if ((N = get_argument (argc, argv, "-noscale"))) {
     remove_argument (N, &argc, argv);
     NoScale = TRUE;
@@ -25,5 +25,5 @@
   /* what file? */
   filename[0] = 0;
-  if (N = get_argument (argc, argv, "-name")) {
+  if ((N = get_argument (argc, argv, "-name"))) {
     remove_argument (N, &argc, argv);
     strcpy (filename, argv[N]);
@@ -32,5 +32,5 @@
   /* which tool */
   Nsource = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nsource = atof (argv[N]);
@@ -38,9 +38,9 @@
   }
   /* which device */
-  if (N = get_argument (argc, argv, "-g")) {
+  if ((N = get_argument (argc, argv, "-g"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (FALSE);
   }  
-  if (N = get_argument (argc, argv, "-i")) {
+  if ((N = get_argument (argc, argv, "-i"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/queues.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/queues.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/queues.c	(revision 2843)
@@ -20,5 +20,5 @@
 
   var = (char *) NULL;
-  if (N = get_argument (argc, argv, "-var")) {
+  if ((N = get_argument (argc, argv, "-var"))) {
     remove_argument (N, &argc, argv);
     var = strcreate (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/radial.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/radial.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/radial.c	(revision 2843)
@@ -3,5 +3,5 @@
 int circstats (int argc, char **argv) {
   
-  int i, j, Nmode, Imode;
+  int i, j;
   double Npix, S1, S2, max, min, Sum, Mean, Stdev, IgnoreValue; 
   double xc, yc, radius, R2, r;
@@ -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);
@@ -20,9 +20,9 @@
 
   Quiet = FALSE;
-  if (N = get_argument (argc, argv, "-q")) {
+  if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/rd.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   JustHead = FALSE;
-  if (N = get_argument (argc, argv, "-head")) {
+  if ((N = get_argument (argc, argv, "-head"))) {
     remove_argument (N, &argc, argv);
     JustHead = TRUE;
@@ -17,5 +17,5 @@
 
   plane = 1;
-  if (N = get_argument (argc, argv, "-plane")) {
+  if ((N = get_argument (argc, argv, "-plane"))) {
     remove_argument (N, &argc, argv);
     plane  = atof(argv[N]);
@@ -25,5 +25,5 @@
   extend = FALSE;
   Nextend = -1;
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     Nextend  = atof(argv[N]);
@@ -34,5 +34,5 @@
   ccdsel = FALSE;
   ccdid = (char *) NULL;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     ccdid  = strcreate (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/read_vectors.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 2843)
@@ -30,5 +30,5 @@
 
   /* auto-sense table type */
-  if (N = get_argument (argc, argv, "-fits")) {
+  if ((N = get_argument (argc, argv, "-fits"))) {
     remove_argument (N, &argc, argv);
     extname = strcreate (argv[N]);
@@ -41,5 +41,5 @@
 
   Nskip = 0;
-  if (N = get_argument (argc, argv, "-skip")) {
+  if ((N = get_argument (argc, argv, "-skip"))) {
     remove_argument (N, &argc, argv);
     Nskip = atof (argv[N]);
@@ -223,5 +223,5 @@
     if (Nval == 0) return (FALSE);
 
-    ALLOCATE (vec, Vector, Nval);
+    ALLOCATE (vec, Vector *, Nval);
     for (j = 0; j < Nval; j++) {
       if (Nval == 1) 
Index: /trunk/Ohana/src/opihi/cmd.data/rebin.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/rebin.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/rebin.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   Normalize = FALSE;
-  if (N = get_argument (argc, argv, "-norm")) {
+  if ((N = get_argument (argc, argv, "-norm"))) {
     remove_argument (N, &argc, argv);
     Normalize = TRUE;
@@ -17,5 +17,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = TRUE;
@@ -24,5 +24,5 @@
   Ignore = FALSE;
   IgnoreValue = 0.0;
-  if (N = get_argument (argc, argv, "-ignore")) {
+  if ((N = get_argument (argc, argv, "-ignore"))) {
     Ignore = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/resize.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/resize.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/resize.c	(revision 2843)
@@ -9,14 +9,14 @@
   /* display source */
   Nsource = -1;
-  if (N = get_argument (argc, argv, "-n")) {
+  if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
     Nsource = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-g")) {
+  if ((N = get_argument (argc, argv, "-g"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (FALSE);
   }  
-  if (N = get_argument (argc, argv, "-i")) {
+  if ((N = get_argument (argc, argv, "-i"))) {
     remove_argument (N, &argc, argv);
     SetImageDevice (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/rotate.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 2843)
@@ -11,5 +11,5 @@
   Xo = 0;
   Yo = 0;
-  if (N = get_argument (argc, argv, "-center")) {
+  if ((N = get_argument (argc, argv, "-center"))) {
     newCenter = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/save.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/save.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/save.c	(revision 2843)
@@ -8,5 +8,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]);
@@ -16,5 +16,5 @@
 
   ISCEL = FALSE;
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     ISCEL = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/section.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/section.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/section.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   List = FALSE;
-  if (N = get_argument (argc, argv, "-list")) {
+  if ((N = get_argument (argc, argv, "-list"))) {
     remove_argument (N, &argc, argv);
     List = TRUE;
@@ -15,5 +15,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.data/shift.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/shift.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/shift.c	(revision 2843)
@@ -10,5 +10,5 @@
 
   ROLL = FALSE;
-  if (N = get_argument (argc, argv, "-roll")) {
+  if ((N = get_argument (argc, argv, "-roll"))) {
     remove_argument (N, &argc, argv);
     ROLL = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/stats.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/stats.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/stats.c	(revision 2843)
@@ -11,5 +11,5 @@
 
   Ignore = FALSE;
-  if (N = get_argument (argc, argv, "-ignore")) {
+  if ((N = get_argument (argc, argv, "-ignore"))) {
     Ignore = TRUE;
     remove_argument (N, &argc, argv);
@@ -19,9 +19,9 @@
 
   Quiet = FALSE;
-  if (N = get_argument (argc, argv, "-q")) {
+  if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/style.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/style.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/style.c	(revision 2843)
@@ -5,9 +5,9 @@
 int style (int argc, char **argv) {
   
-  int i, N, Ngraph;
+  int N, Ngraph;
   Graphdata graphmode;
 
   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]);
@@ -24,5 +24,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-lt")) {
+  if ((N = get_argument (argc, argv, "-lt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ltype = atof(argv[N]);
@@ -30,5 +30,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-lw")) {
+  if ((N = get_argument (argc, argv, "-lw"))) {
     remove_argument (N, &argc, argv);
     graphmode.lweight = atof(argv[N]);
@@ -36,5 +36,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-pt")) {
+  if ((N = get_argument (argc, argv, "-pt"))) {
     remove_argument (N, &argc, argv);
     graphmode.ptype = atof(argv[N]);
@@ -42,15 +42,15 @@
   }
 
-  if (N = get_argument (argc, argv, "+eb")) {
+  if ((N = get_argument (argc, argv, "+eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = TRUE;
   }
 
-  if (N = get_argument (argc, argv, "-eb")) {
+  if ((N = get_argument (argc, argv, "-eb"))) {
     remove_argument (N, &argc, argv);
     graphmode.ebar = FALSE;
   }
 
-  if (N = get_argument (argc, argv, "-sz")) {
+  if ((N = get_argument (argc, argv, "-sz"))) {
     remove_argument (N, &argc, argv);
     graphmode.size = atof(argv[N]);
@@ -58,5 +58,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-c")) {
+  if ((N = get_argument (argc, argv, "-c"))) {
     remove_argument (N, &argc, argv);
     graphmode.color = GetColor (argv[N]);
@@ -65,5 +65,5 @@
   }
 
-  if (N = get_argument (argc, argv, "-x")) {
+  if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
     graphmode.style = atof(argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/textline.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/textline.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/textline.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]);
@@ -17,5 +17,5 @@
   if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
 
-  if (N = get_argument (argc, argv, "-fn")) {
+  if ((N = get_argument (argc, argv, "-fn"))) {
     remove_argument (N, &argc, argv);
     strcpy (name, argv[N]);
@@ -32,5 +32,5 @@
   /* FracPositions uses coordinates of 0-1 relative to axis range */
   FracPositions = FALSE;
-  if (N = get_argument (argc, argv, "-frac")) {
+  if ((N = get_argument (argc, argv, "-frac"))) {
     remove_argument (N, &argc, argv);
     FracPositions = TRUE;
@@ -38,5 +38,5 @@
 
   angle = 0.0;
-  if (N = get_argument (argc, argv, "-rot")) {
+  if ((N = get_argument (argc, argv, "-rot"))) {
     remove_argument (N, &argc, argv);
     angle = atof (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/tv.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/tv.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/tv.c	(revision 2843)
@@ -13,5 +13,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]);
@@ -21,5 +21,5 @@
 
   /* shell exits on pipe close, FIX */
-  if (N = get_argument (argc, argv, "-kill")) {
+  if ((N = get_argument (argc, argv, "-kill"))) {
     close (Ximage);
     Ximage = 0;
@@ -29,5 +29,5 @@
   min = max = 0.0;
   ISLOG = FALSE;
-  if (N = get_argument (argc, argv, "-log")) {
+  if ((N = get_argument (argc, argv, "-log"))) {
     remove_argument (N, &argc, argv);
     ISLOG = TRUE;
Index: /trunk/Ohana/src/opihi/cmd.data/tvcontour.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/tvcontour.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/tvcontour.c	(revision 2843)
@@ -76,5 +76,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]);
Index: /trunk/Ohana/src/opihi/cmd.data/tvgrid.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/tvgrid.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/tvgrid.c	(revision 2843)
@@ -15,5 +15,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]);
Index: /trunk/Ohana/src/opihi/cmd.data/vbin.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vbin.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/vbin.c	(revision 2843)
@@ -12,5 +12,5 @@
 
   Normalize = FALSE;
-  if (N = get_argument (argc, argv, "-norm")) {
+  if ((N = get_argument (argc, argv, "-norm"))) {
     remove_argument (N, &argc, argv);
     Normalize = TRUE;
@@ -18,5 +18,5 @@
 
   VERBOSE = FALSE;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     VERBOSE = TRUE;
@@ -25,5 +25,5 @@
   Ignore = FALSE;
   IgnoreValue = 0.0;
-  if (N = get_argument (argc, argv, "-ignore")) {
+  if ((N = get_argument (argc, argv, "-ignore"))) {
     Ignore = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/vclip.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vclip.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/vclip.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   DO_NAN = FALSE;
-  if (N = get_argument (argc, argv, "-nan")) {
+  if ((N = get_argument (argc, argv, "-nan"))) {
     remove_argument (N, &argc, argv);
     nan_val  = atof(argv[N]);
@@ -17,5 +17,5 @@
 
   DO_INF = FALSE;
-  if (N = get_argument (argc, argv, "-inf")) {
+  if ((N = get_argument (argc, argv, "-inf"))) {
     remove_argument (N, &argc, argv);
     inf_val  = atof(argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/vload.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vload.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/vload.c	(revision 2843)
@@ -3,13 +3,12 @@
 int vload (int argc, char **argv) {
   
-  int i, N, n, Nline, ISCEL;
+  int i, N, n, Nline;
   int Ximage, Nimage;
   double dx, dy;
   char *buffer, *line;
-  Buffer *buf;
   Vector *vecx, *vecy;
   
   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]);
Index: /trunk/Ohana/src/opihi/cmd.data/vstat.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vstat.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/vstat.c	(revision 2843)
@@ -13,5 +13,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,9 +21,9 @@
 
   Quiet = FALSE;
-  if (N = get_argument (argc, argv, "-q")) {
+  if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
   }
-  if (N = get_argument (argc, argv, "-quiet")) {
+  if ((N = get_argument (argc, argv, "-quiet"))) {
     Quiet = TRUE;
     remove_argument (N, &argc, argv);
Index: /trunk/Ohana/src/opihi/cmd.data/wd.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/wd.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/wd.c	(revision 2843)
@@ -12,5 +12,5 @@
 
   Extend  = FALSE;
-  if (N = get_argument (argc, argv, "-extend")) {
+  if ((N = get_argument (argc, argv, "-extend"))) {
     remove_argument (N, &argc, argv);
     Extend  = TRUE;
@@ -18,5 +18,5 @@
 
   newZero  = FALSE;
-  if (N = get_argument (argc, argv, "-bzero")) {
+  if ((N = get_argument (argc, argv, "-bzero"))) {
     remove_argument (N, &argc, argv);
     outZero  = atof(argv[N]);
@@ -26,5 +26,5 @@
 
   newScale = FALSE;
-  if (N = get_argument (argc, argv, "-bscale")) {
+  if ((N = get_argument (argc, argv, "-bscale"))) {
     remove_argument (N, &argc, argv);
     outScale = atof(argv[N]);
@@ -34,5 +34,5 @@
 
   newBitpix = FALSE;
-  if (N = get_argument (argc, argv, "-bitpix")) {
+  if ((N = get_argument (argc, argv, "-bitpix"))) {
     remove_argument (N, &argc, argv);
     outBitpix = atof(argv[N]);
@@ -42,5 +42,5 @@
 
   newUnsign = FALSE;
-  if (N = get_argument (argc, argv, "-unsign")) {
+  if ((N = get_argument (argc, argv, "-unsign"))) {
     remove_argument (N, &argc, argv);
     outUnsign = -1;
Index: /trunk/Ohana/src/opihi/cmd.data/write_vectors.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/write_vectors.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/write_vectors.c	(revision 2843)
@@ -11,5 +11,5 @@
   /* look for format option */
   format = (char *) NULL;
-  if (N = get_argument (argc, argv, "-f")) {
+  if ((N = get_argument (argc, argv, "-f"))) {
     remove_argument (N, &argc, argv);
     format = strcreate (argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/zap.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/zap.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/zap.c	(revision 2843)
@@ -9,5 +9,5 @@
 
   value = 0;
-  if (N = get_argument (argc, argv, "-v")) {
+  if ((N = get_argument (argc, argv, "-v"))) {
     remove_argument (N, &argc, argv);
     value  = atof(argv[N]);
Index: /trunk/Ohana/src/opihi/cmd.data/zplot.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/zplot.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/cmd.data/zplot.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/include/data.h
===================================================================
--- /trunk/Ohana/src/opihi/include/data.h	(revision 2842)
+++ /trunk/Ohana/src/opihi/include/data.h	(revision 2843)
@@ -10,4 +10,5 @@
 /* in misc/queues.c */
 void InitQueues ();
+void ListQueues ();
 Queue *FindQueue (char *name);
 Queue *CreateQueue (char *name);
@@ -49,9 +50,9 @@
 float mrqmin (float *x, float *y, float *dy, int Npts, 
 	      float *par, int Npar, 
-	      float (funcs)(float, float *, int, float *));
+	      float (funcs)(float, float *, int, float *), int VERBOSE);
 
-int mrqinit (float *x, float *y, float *dy, int Npts, 
-	     float *par, int Npar, 
-	     float (funcs)(float, float *, int, float *));
+float mrqinit (float *x, float *y, float *dy, int Npts, 
+	       float *par, int Npar, 
+	       float (funcs)(float, float *, int, float *), int VERBOSE);
 
 float **mrqcovar (int Npar);
@@ -66,9 +67,9 @@
 float mrq2dmin (float *x, float *t, float *y, float *dy, int Npts, 
 		float *par, int Npar, 
-		float (funcs)(float, float, float *, int, float *));
+		float (funcs)(float, float, float *, int, float *), int VERBOSE);
 
 float mrq2dinit (float *x, float *t, float *y, float *dy, int Npts, 
 		 float *par, int Npar, 
-		 float (funcs)(float, float, float *, int, float *));
+		 float (funcs)(float, float, float *, int, float *), int VERBOSE);
 
 float **mrq2dcovar (int Npar);
@@ -86,4 +87,6 @@
 /* misc/starfuncs.c */
 double get_aperture_stats (Matrix *matrix, int X, int Y, int Npix, int Nborder, double max);
+int set_rough_radii (double Ra, double Ri, double Ro);
+int get_rough_star (float *data, int Nx, int Ny, int x, int y, float *xc, float *yc, float *sx, float *sy, float *sxy, float *zs, float *zp, float *sk);
 
 /* misc/precess.c */
@@ -97,2 +100,3 @@
 int read_table_vectors (int argc, char **argv, char *extname);
 # endif
+
Index: /trunk/Ohana/src/opihi/include/dvomath.h
===================================================================
--- /trunk/Ohana/src/opihi/include/dvomath.h	(revision 2842)
+++ /trunk/Ohana/src/opihi/include/dvomath.h	(revision 2843)
@@ -66,4 +66,5 @@
 int           SM_binary             PROTO((StackVar *OUT, StackVar *V1, StackVar *V2, char *op));
 int           SS_binary             PROTO((StackVar *OUT, StackVar *V1, StackVar *V2, char *op));
+int           WW_binary             PROTO((StackVar *OUT, StackVar *V1, StackVar *V2, char *op));
 int           S_unary               PROTO((StackVar *OUT, StackVar *V1, char *op));
 int           V_unary               PROTO((StackVar *OUT, StackVar *V1, char *op));
Index: /trunk/Ohana/src/opihi/include/external.h
===================================================================
--- /trunk/Ohana/src/opihi/include/external.h	(revision 2842)
+++ /trunk/Ohana/src/opihi/include/external.h	(revision 2843)
@@ -22,2 +22,4 @@
 #   define ENOENT          2 
 # endif
+
+# define strlen(A) ((int)strlen(A))
Index: /trunk/Ohana/src/opihi/include/mana.h
===================================================================
--- /trunk/Ohana/src/opihi/include/mana.h	(revision 2842)
+++ /trunk/Ohana/src/opihi/include/mana.h	(revision 2843)
@@ -1,3 +1,3 @@
-# include "opihi.h"
+# include "data.h"
 
 # ifndef MANA_H
Index: /trunk/Ohana/src/opihi/include/shell.h
===================================================================
--- /trunk/Ohana/src/opihi/include/shell.h	(revision 2842)
+++ /trunk/Ohana/src/opihi/include/shell.h	(revision 2843)
@@ -46,4 +46,5 @@
 char         *parse                 	PROTO((char *line));
 char        **parse_commands        	PROTO((char *, int *));
+void          welcome                   PROTO(());
 
 int           is_for_loop           	PROTO((char *line));
Index: /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 2843)
@@ -2,11 +2,7 @@
 
 /* need to pass in a function of the form:
-
-   funcs (x, t, a, Npar, dyda) 
-
-   returns f (x, t) for Npar parameters a, also df/da at x,t 
-
+   funcs (x, t, a, Npar, dy/da) 
+   returns y (x,t) for Npar parameters a along with dy/da at (x,t)
    dy carries 1/sig^2 
-
 */
 
@@ -21,5 +17,5 @@
 
   int k, j, i;
-  float ydiff, wt, chisq, value;
+  float ydiff, wt, chisq;
 
   for (j = 0; j < Npar; j++) {
@@ -32,11 +28,6 @@
 
     ydiff = funcs (x[i], t[i], par, Npar, dyda) - y[i];
-    value = SQ(ydiff) * fabs(dy[i]);
-    if (value < 0.0) fprintf (stderr, "neg chi: %f %f\n", value, chisq);
-    chisq += value; 
+    chisq += SQ(ydiff) * dy[i];
     
-    if (!finite (dyda[i])) { dyda[i] = 1e10; }
-    if (!finite (dy[i])) { dyda[i] = 1e10; }
-
     for (j = 0; j < Npar; j++) {
       wt = dyda[j] * dy[i];
@@ -56,5 +47,5 @@
 float mrq2dmin (float *x, float *t, float *y, float *dy, int Npts, 
 	      float *par, int Npar, 
-	      float (funcs)(float, float, float *, int, float *)) {
+	      float (funcs)(float, float, float *, int, float *), int VERBOSE) {
 
   int j, k;
@@ -68,4 +59,5 @@
   }
 
+  /* keep this test in here? */
   if (!fgaussj (talpha, Npar, tbeta, 1)) {
     lambda *= 10.0;
@@ -73,10 +65,15 @@
   }
 
-  /* if we keep some fixed, set partry to just them 
-     for (j = 0; j < Npar; j++) partry[j] = par[j]; */
-
   for (j = 0; j < Npar; j++) partry[j] = par[j] - tbeta[j][0];
 
   chisq = mrq2dcof (x, t, y, dy, Npts, partry, Npar, talpha, tbeta, funcs);
+  if (VERBOSE) { 
+    fprintf (stderr, "chisq: %f  ", chisq);
+    fprintf (stderr, "lambda: %f  ", lambda);
+    for (j = 0; j < Npar; j++) {
+      fprintf (stderr, "%f ", partry[j]);
+    }
+    fprintf (stderr, "\n");
+  }
 
   /* if good, save temp values */
@@ -100,5 +97,5 @@
 float mrq2dinit (float *x, float *t, float *y, float *dy, int Npts, 
 	      float *par, int Npar, 
-	      float (funcs)(float, float, float *, int, float *)) {
+	      float (funcs)(float, float, float *, int, float *), int VERBOSE) {
 
   int i;
@@ -121,4 +118,12 @@
   
   ochisq = mrq2dcof (x, t, y, dy, Npts, par, Npar, alpha, beta, funcs);
+  if (VERBOSE) {
+    fprintf (stderr, "chisq: %f  ", ochisq);
+    fprintf (stderr, "lambda: %f  ", lambda);
+    for (i = 0; i < Npar; i++) {
+      fprintf (stderr, "%f ", par[i]);
+    }
+    fprintf (stderr, "\n");
+  }
 
   return (ochisq);
Index: /trunk/Ohana/src/opihi/lib.data/mrqmin.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/mrqmin.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.data/mrqmin.c	(revision 2843)
@@ -2,13 +2,8 @@
 
 /* need to pass in a function of the form:
-
    funcs (x, a, Npar, dyda) 
-
    returns f (x) for Npar parameters a, also df/da at x 
-
    dy carries 1/sig^2 
-
 */
-
 
 static float **alpha, **talpha;
@@ -52,5 +47,5 @@
 float mrqmin (float *x, float *y, float *dy, int Npts, 
 	      float *par, int Npar, 
-	      float (funcs)(float, float *, int, float *)) {
+	      float (funcs)(float, float *, int, float *), int VERBOSE) {
 
   int j, k;
@@ -66,10 +61,15 @@
   fgaussj (talpha, Npar, tbeta, 1);
 
-  /* if we keep some fixed, set partry to just them 
-     for (j = 0; j < Npar; j++) partry[j] = par[j]; */
-
   for (j = 0; j < Npar; j++) partry[j] = par[j] - tbeta[j][0];
 
   chisq = mrqcof (x, y, dy, Npts, partry, Npar, talpha, tbeta, funcs);
+  if (VERBOSE) { 
+    fprintf (stderr, "chisq: %f  ", chisq);
+    fprintf (stderr, "lambda: %f  ", lambda);
+    for (j = 0; j < Npar; j++) {
+      fprintf (stderr, "%f ", partry[j]);
+    }
+    fprintf (stderr, "\n");
+  }
 
   /* if good, save temp values */
@@ -91,7 +91,7 @@
 }
 
-int mrqinit (float *x, float *y, float *dy, int Npts, 
+float mrqinit (float *x, float *y, float *dy, int Npts, 
 	      float *par, int Npar, 
-	      float (funcs)(float, float *, int, float *)) {
+	      float (funcs)(float, float *, int, float *), int VERBOSE) {
 
   int i;
@@ -109,23 +109,24 @@
     ALLOCATE (tbeta[i], float, Npar);
   }
-
   
-  lambda = 0.001;
+  lambda = 0.01;
   
   ochisq = mrqcof (x, y, dy, Npts, par, Npar, alpha, beta, funcs);
-
-  return (TRUE);
+  if (VERBOSE) {
+    fprintf (stderr, "chisq: %f  ", ochisq);
+    fprintf (stderr, "lambda: %f  ", lambda);
+    for (i = 0; i < Npar; i++) {
+      fprintf (stderr, "%f ", par[i]);
+    }
+    fprintf (stderr, "\n");
+  }
+  return (ochisq);
 }
-
-
 
 /* don't invoke this in the middle of a run, only near the end */ 
 float **mrqcovar (int Npar) {
-
   fgaussj (alpha, Npar, beta, 1);
   return (alpha);
-
 } 
-
 
 void mrqfree (int Npar) {
@@ -145,4 +146,3 @@
   free (partry);
   free (dyda);
-
 }
Index: /trunk/Ohana/src/opihi/lib.data/starfuncs.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 2843)
@@ -92,25 +92,40 @@
 }
 
+static double Raper  =  5;
+static double Rinner = 10;
+static double Router = 15;
+static double *sky = NULL;
+
+int set_rough_radii (double Ra, double Ri, double Ro) {
+
+  Raper = Ra;
+  Rinner = Ri;
+  Router = Ro;
+  if (sky == NULL) {
+    ALLOCATE (sky, double, SQ(2*Router + 1));
+  } else {
+    REALLOCATE (sky, double, SQ(2*Router + 1));
+  }
+  return (TRUE);
+}
+
 /* use a circular aperture */
 int get_rough_star (float *data, int Nx, int Ny, int x, int y,
-		       float *xc, float *yc, 
-		       float *sx, float *sy, 
-		       float *zs, float *zp) {
-
-  double *sky;
-  double Raper, Rinner, Router, Ra2, Ri2, Ro2, rad2;
+		    float *xc, float *yc, 
+		    float *sx, float *sy, float *sxy,
+		    float *zs, float *zp, float *sk) {
+
+  double Ra2, Ri2, Ro2, rad2;
   int i, j, Npts, Nsky;
   int Xs, Xe, Ys, Ye, off, Xc, Yc;
   double peak, fsky, value;
-  double Sx, Sy, Sx2, Sy2, Sum;
+  double Sx, Sy, Sx2, Sy2, Sxy, Sum;
   
   /* define circular boundaries */
-  Raper  = 15;  Ra2 = SQ(Raper);
-  Rinner = 25;  Ri2 = SQ(Rinner);
-  Router = 35;  Ro2 = SQ(Router);
+  Ra2 = SQ(Raper);
+  Ri2 = SQ(Rinner);
+  Ro2 = SQ(Router);
 
   /* measure the sky level */
-  ALLOCATE (sky, double, SQ(2*Router + 1));
-
   /* boundaries for the outer sky region */
   Xs = MAX (x - Router, 0);
@@ -119,4 +134,6 @@
   Ye = MIN (y + Router + 1, Ny);
 
+/* this sample uses a circular aperture */
+# if (0)
   Nsky = 0;  
   for (j = Ys; j < Ye; j++) {
@@ -135,5 +152,54 @@
   }
   fsky = fsky / Npts;
-  free (sky);
+# else
+
+/* this sample uses a square outer annulus, without loop if tests */
+  Nsky = 0;  
+  Xs = MAX (x - Router, 0);
+  Xe = MIN (x - Rinner + 1, Nx);
+  Ys = MAX (y - Rinner, 0);
+  Ye = MIN (y + Rinner + 1, Ny);
+  for (j = Ys; j < Ye; j++) {
+    off = j*Nx;
+    for (i = Xs; i < Xe; i++) { 
+      sky[Nsky] = data[i+off];
+      Nsky ++;
+    }
+  }
+  Xs = MAX (x + Rinner, 0);
+  Xe = MIN (x + Router + 1, Nx);
+  for (j = Ys; j < Ye; j++) {
+    off = j*Nx;
+    for (i = Xs; i < Xe; i++) { 
+      sky[Nsky] = data[i+off];
+      Nsky ++;
+    }
+  }
+  Xs = MAX (x - Rinner, 0);
+  Xe = MIN (x - Rinner + 1, Nx);
+  Ys = MAX (y - Router, 0);
+  Ye = MIN (y - Rinner + 1, Ny);
+  for (j = Ys; j < Ye; j++) {
+    off = j*Nx;
+    for (i = Xs; i < Xe; i++) { 
+      sky[Nsky] = data[i+off];
+      Nsky ++;
+    }
+  }
+  Ys = MAX (y + Rinner, 0);
+  Ye = MIN (y + Router + 1, Ny);
+  for (j = Ys; j < Ye; j++) {
+    off = j*Nx;
+    for (i = Xs; i < Xe; i++) { 
+      sky[Nsky] = data[i+off];
+      Nsky ++;
+    }
+  }
+  sort (sky, Nsky);
+  for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) {
+    fsky += sky[i];
+  }
+  fsky = fsky / Npts;
+# endif
 
   /* boundaries for the star region */
@@ -145,5 +211,5 @@
   /** note that this will fail on negative flux objects */
   peak = Npts = 0;
-  Sx = Sy = Sx2 = Sy2 = Sum = 0;
+  Sx = Sy = Sx2 = Sy2 = Sxy = Sum = 0;
   for (j = Ys; j < Ye; j++) {
     off = j*Nx;
@@ -158,4 +224,5 @@
       Sx2 += Xc*Xc*value;
       Sy2 += Yc*Yc*value;
+      Sxy += Xc*Yc*value;
       Sum += value;
       Npts ++;
@@ -168,8 +235,10 @@
   *sx = sqrt (fabs (Sx2 / Sum - SQ(*xc)));
   *sy = sqrt (fabs (Sy2 / Sum - SQ(*yc)));
+  *sxy = Sxy / Sum;
   *xc += x;
   *yc += y;
   *zs = Sum;
   *zp = peak;
+  *sk = fsky;
   /* note sigma is rough: round-off errors can introduce errors */
   /* using values relative to x,y should minimize this effect */
Index: /trunk/Ohana/src/opihi/lib.shell/BufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 2843)
@@ -211,9 +211,9 @@
   fprintf (stderr, "try %d\n", n);
   for (i = 0; i < Nbuffers; i++) {
-    fprintf (stderr, "%d  %x\n", i, (int) buffers[i]);
-    fprintf (stderr, "%d  %x  %s\n", i, (int) buffers[i][0].name, buffers[i][0].name);
-    fprintf (stderr, "%d  %x  %s\n", i, (int) buffers[i][0].file, buffers[i][0].file);
-    fprintf (stderr, "%d  %x  %x\n", i, (int) &buffers[i][0].header, (int) buffers[i][0].header.buffer);
-    fprintf (stderr, "%d  %x  %x\n", i, (int) &buffers[i][0].matrix, (int) buffers[i][0].matrix.buffer);
+    fprintf (stderr, "%d  %lx\n", i, (long) buffers[i]);
+    fprintf (stderr, "%d  %lx  %s\n", i, (long) buffers[i][0].name, buffers[i][0].name);
+    fprintf (stderr, "%d  %lx  %s\n", i, (long) buffers[i][0].file, buffers[i][0].file);
+    fprintf (stderr, "%d  %lx  %lx\n", i, (long) &buffers[i][0].header, (long) buffers[i][0].header.buffer);
+    fprintf (stderr, "%d  %lx  %lx\n", i, (long) &buffers[i][0].matrix, (long) buffers[i][0].matrix.buffer);
     fprintf (stderr, "%d  %d  %d  %f %f\n", i, buffers[i][0].bitpix, buffers[i][0].unsign, buffers[i][0].bscale, buffers[i][0].bzero);
   }
Index: /trunk/Ohana/src/opihi/lib.shell/check_stack.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/check_stack.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.shell/check_stack.c	(revision 2843)
@@ -4,5 +4,5 @@
 
   int i, Nx, Ny, Nv, size;
-  char *c, line[128];
+  char *c;
 
   Nv = Nx = -1;
Index: /trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c	(revision 2843)
@@ -191,5 +191,5 @@
   for (i = 0; i < Nstack; i++) {
     if (IsBufferPtr (stack[i].buffer) && (stack[i].type == 'm')) {
-      if (VERBOSE) fprintf (stderr, "free %s (buff) (%x)\n", stack[i].name, (int) stack[i].buffer);
+      if (VERBOSE) fprintf (stderr, "free %s (buff) (%lx)\n", stack[i].name, (long) stack[i].buffer);
       free (stack[i].buffer[0].header.buffer);
       free (stack[i].buffer[0].matrix.buffer);
@@ -198,10 +198,10 @@
     }	
     if (IsVectorPtr (stack[i].vector) && (stack[i].type == 'v')) {
-      if (VERBOSE) fprintf (stderr, "free %s (vect) (%x)\n", stack[i].name, (int) stack[i].vector);
+      if (VERBOSE) fprintf (stderr, "free %s (vect) (%lx)\n", stack[i].name, (long) stack[i].vector);
       free (stack[i].vector[0].elements);
       free (stack[i].vector);
       stack[i].vector = NULL;
     }	
-    if (VERBOSE) fprintf (stderr, "free %s (name) (%d) (%x)\n", stack[i].name, i, (int) stack[i].name);
+    if (VERBOSE) fprintf (stderr, "free %s (name) (%d) (%lx)\n", stack[i].name, i, (long) stack[i].name);
     free (stack[i].name);
     stack[i].name = NULL;
Index: /trunk/Ohana/src/opihi/lib.shell/exec_loop.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/exec_loop.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/lib.shell/exec_loop.c	(revision 2843)
@@ -3,5 +3,6 @@
 int exec_loop (Macro *loop) {
 
-  int n, Nlines, j, status, ThisList, Signal;
+  void *Signal;
+  int n, Nlines, j, status, ThisList;
   char *outline;
   
@@ -19,5 +20,5 @@
 
   /* set up interrupts */
-  Signal = (int) signal (SIGINT, handle_interrupt);
+  Signal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
 
@@ -35,5 +36,5 @@
     if (loop_break || loop_continue) break;
   }
-  signal (SIGINT, (void *) Signal);
+  signal (SIGINT, Signal);
 
   /* free up the list and decrement the shell level */
Index: /trunk/Ohana/src/opihi/mana/rawstars.c
===================================================================
--- /trunk/Ohana/src/opihi/mana/rawstars.c	(revision 2842)
+++ /trunk/Ohana/src/opihi/mana/rawstars.c	(revision 2843)
@@ -1,13 +1,31 @@
 # include "mana.h"
-
-int get_rough_star (float *data, int Nx, int Ny, int x, int y, float *xc, float *yc, float *sx, float *sy, float *zs, float *zp);
 
 int rawstars (int argc, char **argv) {
   
-  int i, x, y, Nx, Ny, Np;
+  int i, x, y, N, Nx, Ny, Np;
   float *v;
+  double Raper, Rinner, Router;
   Vector *xp, *yp;
-  Vector *xc, *yc, *sx, *sy, *zs, *zp;
+  Vector *xc, *yc, *sx, *sy, *sxy, *zs, *zp, *sk;
   Buffer *buff;
+
+  Raper = 5;
+  if ((N = get_argument (argc, argv, "-Raper"))) {
+    remove_argument (N, &argc, argv);
+    Raper = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  Rinner = 10;
+  if ((N = get_argument (argc, argv, "-Rinner"))) {
+    remove_argument (N, &argc, argv);
+    Rinner = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  Router = 15;
+  if ((N = get_argument (argc, argv, "-Router"))) {
+    remove_argument (N, &argc, argv);
+    Router = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
 
   if (argc < 4) goto usage;
@@ -21,4 +39,6 @@
   }
 
+  set_rough_radii (Raper, Rinner, Router);
+
   /* output vectors */
   if ((xc = SelectVector ("xc", ANYVECTOR, TRUE)) == NULL) return (FALSE);
@@ -26,6 +46,8 @@
   if ((sx = SelectVector ("sx", ANYVECTOR, TRUE)) == NULL) return (FALSE);
   if ((sy = SelectVector ("sy", ANYVECTOR, TRUE)) == NULL) return (FALSE);
+  if ((sxy = SelectVector ("sxy", ANYVECTOR, TRUE)) == NULL) return (FALSE);
   if ((zs = SelectVector ("zs", ANYVECTOR, TRUE)) == NULL) return (FALSE);
   if ((zp = SelectVector ("zp", ANYVECTOR, TRUE)) == NULL) return (FALSE);
+  if ((sk = SelectVector ("sk", ANYVECTOR, TRUE)) == NULL) return (FALSE);
 
   Nx = buff[0].matrix.Naxis[0];
@@ -37,8 +59,11 @@
   REALLOCATE (sx[0].elements, float, Np);
   REALLOCATE (sy[0].elements, float, Np);
+  REALLOCATE (sxy[0].elements, float, Np);
   REALLOCATE (zs[0].elements, float, Np);
   REALLOCATE (zp[0].elements, float, Np);
+  REALLOCATE (sk[0].elements, float, Np);
   xc[0].Nelements = yc[0].Nelements = sx[0].Nelements = Np;
   sy[0].Nelements = zs[0].Nelements = zp[0].Nelements = Np;
+  sxy[0].Nelements = sk[0].Nelements = Np;
 
   v = (float *) buff[0].matrix.buffer;
@@ -56,6 +81,8 @@
 		    &sx[0].elements[i], 
 		    &sy[0].elements[i], 
+		    &sxy[0].elements[i], 
 		    &zs[0].elements[i], 
-		    &zp[0].elements[i]);
+		    &zp[0].elements[i],
+		    &sk[0].elements[i]);
   }
 
