Index: /trunk/Ohana/src/opihi/cmd.data/subset.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/subset.c	(revision 42310)
+++ /trunk/Ohana/src/opihi/cmd.data/subset.c	(revision 42311)
@@ -81,4 +81,20 @@
     }
   }
+  if ((ivec->type == OPIHI_STR) && (tvec->type == OPIHI_FLT)) {
+    opihi_flt *vt = tvec[0].elements.Flt;
+    for (Npts = i = 0; i < tvec[0].Nelements; i++, vt++) {
+      if (!*vt) continue;
+      ovec[0].elements.Str[Npts] = strcreate (ivec[0].elements.Str[i]);
+      Npts++;
+    }
+  }
+  if ((ivec->type == OPIHI_STR) && (tvec->type == OPIHI_INT)) {
+    opihi_int *vt = tvec[0].elements.Int;
+    for (Npts = i = 0; i < tvec[0].Nelements; i++, vt++) {
+      if (!*vt) continue;
+      ovec[0].elements.Str[Npts] = strcreate (ivec[0].elements.Str[i]);
+      Npts++;
+    }
+  }
 
   // free up unused memory
Index: /trunk/Ohana/src/opihi/lib.shell/stack_math.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/stack_math.c	(revision 42310)
+++ /trunk/Ohana/src/opihi/lib.shell/stack_math.c	(revision 42311)
@@ -1619,4 +1619,12 @@
   OUT[0].vector = InitVector ();
   OUT[0].type = ST_VECTOR_TMP; /*** <<--- says this is a temporary matrix ***/
+
+  if (V1->vector->type == OPIHI_STR) {
+    ResetVector (OUT->vector, V1->vector->type, V1->vector->Nelements);
+    for (i = 0; i < V1->vector->Nelements; i++) {
+      OUT->vector->elements.Str[i] = strcreate (V1->vector->elements.Str[i]);
+    }
+    goto escape;
+  }
 
 # define V_FUNC(OP,FTYPE) {						\
