Index: /trunk/Ohana/src/opihi/cmd.data/rotate.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 41714)
+++ /trunk/Ohana/src/opihi/cmd.data/rotate.c	(revision 41715)
@@ -92,5 +92,5 @@
     X1 = NY - Yo;
     Y1 = Xo;
-    gprint (GP_ERR, "%f %f -> %f %f\n", Xo, Yo, X1, Y1);
+    // gprint (GP_ERR, "%f %f -> %f %f\n", Xo, Yo, X1, Y1);
     gfits_modify (&buf[0].header, "CRPIX1", "%lf", 1, X1);
     gfits_modify (&buf[0].header, "CRPIX2", "%lf", 1, Y1);
@@ -105,6 +105,6 @@
     PC21 = pc11;
     PC22 = pc12;
-    gprint (GP_ERR, "%f %f  ->  %f %f\n", pc11, pc12, PC11, PC12);
-    gprint (GP_ERR, "%f %f  ->  %f %f\n", pc21, pc22, PC21, PC22);
+    // gprint (GP_ERR, "%f %f  ->  %f %f\n", pc11, pc12, PC11, PC12);
+    // gprint (GP_ERR, "%f %f  ->  %f %f\n", pc21, pc22, PC21, PC22);
     gfits_modify (&buf[0].header, "PC001001", "%le", 1, PC11);
     gfits_modify (&buf[0].header, "PC001002", "%le", 1, PC12);
Index: /trunk/Ohana/src/opihi/include/shell.h
===================================================================
--- /trunk/Ohana/src/opihi/include/shell.h	(revision 41714)
+++ /trunk/Ohana/src/opihi/include/shell.h	(revision 41715)
@@ -7,4 +7,5 @@
 # define ESCAPE(MSG,...) { gprint (GP_ERR, MSG, __VA_ARGS__); return FALSE; }
 
+# define ISVEC(a) (isalnum (a) || (a == '.') || (a == '_'))
 # define ISVAR(a) (isalnum (a) || (a == ':') || (a == '_'))
 # define ISREF(a) (isalnum (a) || (a == '_'))
Index: /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 41714)
+++ /trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 41715)
@@ -164,5 +164,6 @@
 
   
-  lambda = 0.001;
+//  lambda = 0.001;
+  lambda = 1.0;
   
   ochisq = mrq2dcof (x, t, y, dy, Npts, par, Npar, alpha, beta, funcs);
Index: /trunk/Ohana/src/opihi/lib.shell/VectorOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/VectorOps.c	(revision 41714)
+++ /trunk/Ohana/src/opihi/lib.shell/VectorOps.c	(revision 41715)
@@ -65,4 +65,17 @@
 }
 
+int IsVectorNameValid (char *name) {
+
+  char *p = name;
+
+  while (*p) {
+    int valid = OHANA_WHITESPACE(*p);
+    valid = valid || ISVEC(*p);
+    if (!valid) return FALSE;
+    p++;
+  }
+  return TRUE;
+}
+
 int IsVectorPtr (Vector *vec) {
  
@@ -89,4 +102,6 @@
   if (i == Nvectors) { 
     if (mode == OLDVECTOR) goto error;
+    // validate vector name syntax
+    if (!IsVectorNameValid(name)) { gprint (GP_ERR, "invalid vector name %s\n", name); return NULL; }
     pthread_mutex_lock (&mutex);
     Nvectors ++;
Index: /trunk/Ohana/src/opihi/lib.shell/expand_vectors.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/expand_vectors.c	(revision 41714)
+++ /trunk/Ohana/src/opihi/lib.shell/expand_vectors.c	(revision 41715)
@@ -131,5 +131,10 @@
       p--;
     }
-    for (w = p - 1; (w >= line) && !OHANA_WHITESPACE(*w) && (isalnum(*w) || (*w == ':') || (*w == '_')); w--);
+
+    // Scan backwards for the start of the vector name.  ISVEC is defined in
+    // include/shell.h.  A vector name cannot include a colon, while a variable name
+    // cannot include a dot.
+
+    for (w = p - 1; (w >= line) && !OHANA_WHITESPACE(*w) && ISVEC(*w); w--);
     w ++;
     n = (int)(p - w);
