Index: trunk/Ohana/src/opihi/cmd.astro/csystem.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/csystem.c	(revision 41304)
+++ trunk/Ohana/src/opihi/cmd.astro/csystem.c	(revision 41305)
@@ -12,4 +12,14 @@
   Vector *uxvec = NULL;
   Vector *uyvec = NULL;
+
+  int Quiet = FALSE;
+  if ((N = get_argument (argc, argv, "-q"))) {
+    Quiet = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-quiet"))) {
+    Quiet = TRUE;
+    remove_argument (N, &argc, argv);
+  }
 
   // transform proper motions at the same time
@@ -84,7 +94,45 @@
 
     if (uXname) {
-      gprint (GP_LOG, "%10.6f %10.6f @ %10.6f %10.6f\n", x, y, ux, uy);
+      if (!Quiet) {
+	gprint (GP_LOG, "%10.6f %10.6f @ %10.6f %10.6f\n", x, y, ux, uy);
+	switch (output) {
+	  case COORD_CELESTIAL:
+	    set_variable ("uR", ux);
+	    set_variable ("uD", uy);
+	    break;
+	  case COORD_ECLIPTIC:
+	    set_variable ("uL", ux);
+	    set_variable ("uB", uy);
+	    break;
+	  case COORD_GALACTIC:
+	  case COORD_GALACTIC_REID_2004:
+	    set_variable ("uLon", ux);
+	    set_variable ("uLat", uy);
+	    break;
+	  default:
+	    break;
+	}
+      }
     } else {
-      gprint (GP_LOG, "%10.6f %10.6f\n", x, y);
+      if (!Quiet) {
+	gprint (GP_LOG, "%10.6f %10.6f\n", x, y);
+      }
+    }
+    switch (output) {
+      case COORD_CELESTIAL:
+	set_variable ("RA", x);
+	set_variable ("DEC", y);
+	break;
+      case COORD_ECLIPTIC:
+	set_variable ("Lambda", x);
+	set_variable ("Beta", y);
+	break;
+      case COORD_GALACTIC:
+      case COORD_GALACTIC_REID_2004:
+	set_variable ("gLon", x);
+	set_variable ("gLat", y);
+	break;
+      default:
+	break;
     }
     free (transform);
@@ -154,4 +202,9 @@
   gprint (GP_ERR, " e.g.   : csystem C G R D -pm uR uD -> R D will contain glon, glat; uR, uD will contain uL, uB\n");
   gprint (GP_ERR, " e.g.   : csystem C G R D -pmback uL uB -> R D will contain glon, glat; uL, uB will contain uR, uD\n");
+  gprint (GP_ERR, "        :  if input values are vectors, their values are replaced with the transformed values\n");
+  gprint (GP_ERR, "        :  if input values are scalars, the transformed coordinates are printed (disable with -q)\n");
+  gprint (GP_ERR, "        :    and the following output variables will be set (names depend on output system)\n");
+  gprint (GP_ERR, "        :  output positions (RA, DEC), (Lambda, Beta), (gLon, gLat)\n");
+  gprint (GP_ERR, "        :  output motions   (uR, uD),  (uL, uB),       (uLon, uLat)\n");
   return FALSE;
 }
Index: trunk/Ohana/src/opihi/cmd.astro/mkgauss.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.astro/mkgauss.c	(revision 41304)
+++ trunk/Ohana/src/opihi/cmd.astro/mkgauss.c	(revision 41305)
@@ -10,4 +10,10 @@
   double x, y, r, f, Xo, Yo;
   Buffer *buf;
+
+  int Normalize = FALSE;
+  if ((N = get_argument (argc, argv, "-norm"))) {
+    Normalize = TRUE;
+    remove_argument (N, &argc, argv);
+  }    
 
   // this should be Nx/2, Ny/2 if not set
@@ -60,4 +66,6 @@
   /* f = exp (-r), r = (x^2 / 2Sx) + (y^2 / 2Sy) + Sxy*x*y */
 
+  double Io = Normalize ? 1.0 / (2.0 * M_PI * Sig_x * Sig_y) : 1.0;
+
   in = (float *) buf[0].matrix.buffer;
   for (j = 0; j < Ny; j++) {
@@ -67,5 +75,5 @@
       y = j - Yo;
       r = 0.5*x*x/Sx + 0.5*y*y/Sy + x*y*Sxy;
-      f = exp (-r);
+      f = Io * exp (-r);
       *in += f;
     }
Index: trunk/Ohana/src/opihi/cmd.data/read_vectors.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 41304)
+++ trunk/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 41305)
@@ -35,5 +35,5 @@
 
 // vector types
-enum {COLTYPE_NONE, COLTYPE_FLT, COLTYPE_INT, COLTYPE_TIME, COLTYPE_CHAR, COLTYPE_STR};
+enum {COLTYPE_NONE, COLTYPE_FLT, COLTYPE_INT, COLTYPE_TIME, COLTYPE_DATE, COLTYPE_CHAR, COLTYPE_STR, COLTYPE_HMS};
 
 static int      Nvec     = 0;
@@ -91,9 +91,11 @@
     gprint (GP_ERR, "     -skip N : skip N lines before reading\n");
     gprint (GP_ERR, "     column names may include a type: name:type\n");
-    gprint (GP_ERR, "       type is int, float, char, str, time\n");
+    gprint (GP_ERR, "       type is int, float, char, str, time, date, hms\n");
     gprint (GP_ERR, "       for char, values are placed into a list $name:0 - $name:n\n");
     gprint (GP_ERR, "       for str, values are placed into a string-typed vector\n");
+    gprint (GP_ERR, "       for hms, values are sexigesimal values HH:MM:SS (good for degrees as well)\n");
+    gprint (GP_ERR, "       for date, values are human-readable date strings YYYY/MM/DD\n");
     gprint (GP_ERR, "       for time, values are human-readable date/time strings YYYY/MM/DD,hh:mm:ss\n");
-    gprint (GP_ERR, "       the resulting vector is a float based on the TIMEFORMAT, TIMEREF values\n");
+    gprint (GP_ERR, "         date & time values are stored as a float using the TIMEFORMAT, TIMEREF values for the conversion\n");
 
     gprint (GP_ERR, "     -fits options:\n");
@@ -154,5 +156,7 @@
       if (!strcasecmp(ptr, "char"))  { coltype[i] = COLTYPE_CHAR; }
       if (!strcasecmp(ptr, "str"))   { coltype[i] = COLTYPE_STR; }
+      if (!strcasecmp(ptr, "date"))  { coltype[i] = COLTYPE_DATE; }
       if (!strcasecmp(ptr, "time"))  { coltype[i] = COLTYPE_TIME; }
+      if (!strcasecmp(ptr, "hms"))   { coltype[i] = COLTYPE_HMS; }
       if (!coltype[i]) goto bad_colname;
     }
@@ -212,6 +216,7 @@
 	break;
       case COLTYPE_FLT:
+      case COLTYPE_HMS:
       case COLTYPE_TIME:
-	// note that COLTYPE_TIME is a type of float
+      case COLTYPE_DATE:
 	ResetVector (vec[i], OPIHI_FLT, NELEM);
 	break;
@@ -292,4 +297,5 @@
 	time_t tvalue;
 	int readStatus = FALSE;
+	int dataStatus = FALSE;
 	// need to make the if cases for coltype[i]
 	switch (coltype[i]) {
@@ -341,4 +347,29 @@
 	    vec[i][0].elements.Flt[Nelem] = readStatus ? dvalue : NAN;
 	    break;
+	  case COLTYPE_DATE: {
+	    char *string = NULL;
+	    if (IsCSV) {
+	      char *ptr = ptrparse_csv (col[i], c0);
+	      string = strcreate (ptr); // create separate string (NULL-safe)
+	      ptr = (string == NULL) ? NULL : strchr (string, ',');
+	      if (ptr != NULL) *ptr = 0; // place an EOL here so parsing does not go past the comma
+	    } else {
+	      char *ptr = ptrparse (col[i], c0); // NULL-safe
+	      string = getword (ptr); // NULL-safe
+	    }	      
+	    tvalue = ohana_date_to_sec (string); // NULL-safe (returns 0)
+	    dvalue = TimeValue (tvalue, TimeReference, TimeFormat);
+	    vec[i][0].elements.Flt[Nelem] = string ? dvalue : NAN;
+	    FREE (string);
+	    break;
+	  }
+	  case COLTYPE_HMS: {
+	    char *ptr = IsCSV ? ptrparse_csv (col[i], c0) : ptrparse (col[i], c0);
+	    char *string = strcreate (ptr); // make a copy so we can munge it in ohana_dms_to_ddd
+	    dataStatus = ohana_dms_to_ddd (&dvalue, string);
+	    vec[i][0].elements.Flt[Nelem] = ((string != NULL) && dataStatus) ? dvalue : NAN;
+	    FREE (string);
+	    break;
+	  }
 	}
 	if (!readStatus && VERBOSE) {
@@ -366,5 +397,7 @@
 	      break;
 	    case COLTYPE_FLT:
+	    case COLTYPE_HMS:
 	    case COLTYPE_TIME:
+	    case COLTYPE_DATE:
 	      ResetVector (vec[i], OPIHI_FLT, NELEM);
 	      break;
@@ -390,5 +423,7 @@
 	break;
       case COLTYPE_FLT:
+      case COLTYPE_HMS:
       case COLTYPE_TIME:
+      case COLTYPE_DATE:
 	ResetVector (vec[i], OPIHI_FLT, Nelem);
 	break;
Index: trunk/Ohana/src/opihi/dvo/skyregion.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/skyregion.c	(revision 41304)
+++ trunk/Ohana/src/opihi/dvo/skyregion.c	(revision 41305)
@@ -49,4 +49,5 @@
       gprint (GP_ERR, "current skyregion: %f - %f : %f - %f\n", Rmin, Rmax, Dmin, Dmax);
       gprint (GP_ERR, "USAGE:  skyregion (min RA) (max RA) (min DEC) (max DEC)\n");
+      gprint (GP_ERR, "        skyregion -box (RA) (DEC) (radius) [sets Rmin,Rmax & Dmin,Dmax]\n");
       return FALSE;
     }
Index: trunk/Ohana/src/opihi/lib.data/starfuncs.c
===================================================================
--- trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 41304)
+++ trunk/Ohana/src/opihi/lib.data/starfuncs.c	(revision 41305)
@@ -76,5 +76,5 @@
   FWHMy = 2.355*sqrt (fabs(y2 / I - y*y));
 
-  fprintf (stderr, "Mxx, Myy: %f, %f\n", x2/I - x*x, y2/I - y*y);
+  // fprintf (stderr, "Mxx, Myy: %f, %f\n", x2/I - x*x, y2/I - y*y);
   Sxy   = xy / I - x*y;
   mag = -2.5*log10(I);
