Index: /trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- /trunk/FACT++/src/InterpreterV8.cc	(revision 16537)
+++ /trunk/FACT++/src/InterpreterV8.cc	(revision 16538)
@@ -1158,9 +1158,11 @@
     case 'X':
         {
-            const uint64_t val = *reinterpret_cast<const uint64_t*>(ptr);
+            const int64_t val = *reinterpret_cast<const int64_t*>(ptr);
             ptr += 8;
-            if (val>UINT32_MAX)
-                return Number::New(val);
-            return Integer::NewFromUnsigned(val);
+            if (val>=0 && val<=UINT32_MAX)
+                return Integer::NewFromUnsigned(val);
+            if (val>=INT32_MIN && val<0)
+                return Integer::New(val);
+            return Number::New(val);
         }
     case 'S':  { Handle<Value> v=Integer::NewFromUnsigned(*reinterpret_cast<const uint16_t*>(ptr)); ptr += 2; return v; }
