Index: /branches/eam_branches/ipp-20120627/Ohana/src/opihi/lib.shell/check_stack.c
===================================================================
--- /branches/eam_branches/ipp-20120627/Ohana/src/opihi/lib.shell/check_stack.c	(revision 34123)
+++ /branches/eam_branches/ipp-20120627/Ohana/src/opihi/lib.shell/check_stack.c	(revision 34124)
@@ -1,3 +1,6 @@
 # include "opihi.h"
+# ifndef MAX_INT
+# define MAX_INT 2147483647
+# endif
 
 int check_stack (StackVar *stack, int Nstack, int validsize) {
@@ -12,7 +15,19 @@
 
       /** if this is a number, put it on the list of scalars and move on.  assume value is
-       * an int unless proven otherwise **/
+       * an int unless proven otherwise. 
+
+       If we have built libdvo with opihi_int defined as a 32bit signed int, then we have
+       an overflow for values > MAX_INT (2^31).  If the float value is larger than this,
+       we should treat the value as a float.  (NOTE: this means we cannot use 32bit flags,
+       only 31bit flags.
+
+      **/
+
       stack[i].FltValue = strtod (stack[i].name, &c1);
       stack[i].IntValue = strtol (stack[i].name, &c2, 0);
+      if ((fabs(stack[i].FltValue) > MAX_INT) && (c1 == stack[i].name + strlen (stack[i].name))) {
+	stack[i].type  = 'S'; // 'S' == (float)
+	continue;
+      } 
       if (c2 == stack[i].name + strlen (stack[i].name)) {
 	stack[i].type  = 's'; // 's' == (int)
