diff --git a/src/xercesc/framework/psvi/XSValue.cpp b/src/xercesc/framework/psvi/XSValue.cpp
index 89c1190342b0aec820f5fd648cd52224f9f46962..85f831076479c865da9b3acd9e18006cbb12e534 100644
--- a/src/xercesc/framework/psvi/XSValue.cpp
+++ b/src/xercesc/framework/psvi/XSValue.cpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.21  2004/12/23 16:11:21  cargilld
+ * Various XSValue updates: use ulong for postiveInteger; reset date fields to zero; modifty XSValueTest to test the returned value from getActualValue.
+ *
  * Revision 1.20  2004/12/10 10:37:55  cargilld
  * Fix problem with hexbin::decode and use XMLByte instead of XMLCh for output of decoding.
  *
@@ -193,8 +196,8 @@ const bool XSValue::numericSign[XSValue::dt_MAXCOUNT] =
     true, true, true, true, true,
     true, true, true, true, true,
     true, true, true, true, true,
-    true, true, true, true, false,
-    false, false, false, true 
+    true, true, true, false, false,
+    false, false, false, false 
 };
 
 // ---------------------------------------------------------------------------
@@ -1363,10 +1366,10 @@ XSValue::getActValNumerics(const XMLCh*         const content
                     retVal->fData.fValue.f_long = actVal.f_long;                    
                     break;
                 case XSValue::dt_nonNegativeInteger:                
-                    retVal->fData.fValue.f_long = actVal.f_long;
+                    retVal->fData.fValue.f_long = actVal.f_ulong;
                     break;
                 case XSValue::dt_positiveInteger:               
-                    retVal->fData.fValue.f_long = actVal.f_long;
+                    retVal->fData.fValue.f_long = actVal.f_ulong;
                     break;
                 case XSValue::dt_long:                                                    
                     retVal->fData.fValue.f_long = actVal.f_long;                                    
@@ -1437,24 +1440,35 @@ XSValue::getActValDateTimes(const XMLCh*         const content
             break;
         case XSValue::dt_time:
             coreDate.parseTime();
+            coreDate.fValue[XMLDateTime::CentYear] = 0;  
+            coreDate.fValue[XMLDateTime::Month] = 0;
+            coreDate.fValue[XMLDateTime::Day] = 0;
             break;
         case XSValue::dt_date:
             coreDate.parseDate();
             break;
         case XSValue::dt_gYearMonth:
             coreDate.parseYearMonth();
+            coreDate.fValue[XMLDateTime::Day] = 0;
             break;
         case XSValue::dt_gYear:
-            coreDate.parseYear();
+            coreDate.parseYear();            
+            coreDate.fValue[XMLDateTime::Month] = 0;
+            coreDate.fValue[XMLDateTime::Day] = 0;
             break;
         case XSValue::dt_gMonthDay:
             coreDate.parseMonthDay();
+            coreDate.fValue[XMLDateTime::CentYear] = 0;            
             break;
         case XSValue::dt_gDay:
             coreDate.parseDay();
+            coreDate.fValue[XMLDateTime::CentYear] = 0;
+            coreDate.fValue[XMLDateTime::Month] = 0;            
             break;
         case XSValue::dt_gMonth:
             coreDate.parseMonth();
+            coreDate.fValue[XMLDateTime::CentYear] = 0;            
+            coreDate.fValue[XMLDateTime::Day] = 0;
             break;
         default:
             return 0;
@@ -1668,14 +1682,7 @@ bool XSValue::getActualNumericValue(const XMLCh*  const content
                 status = st_FOCA0002;
                 return 0;
             }
-            break;
-        case XSValue::dt_nonNegativeInteger:
-            if (retVal.f_long < 0)
-            {
-                status = st_FOCA0002;
-                return false;
-            }
-            break;
+            break;        
         case XSValue::dt_unsignedInt:
             // strtoul will set value to LONG_INT if ERANGE error
             if ((retVal.f_ulong > UINT_MAX)  ||
@@ -1700,7 +1707,7 @@ bool XSValue::getActualNumericValue(const XMLCh*  const content
             }              
             break;              
         case XSValue::dt_positiveInteger:
-            if (retVal.f_long <= 0)
+            if (retVal.f_ulong == 0)
             {
                 status = st_FOCA0002;
                 return false;
diff --git a/src/xercesc/framework/psvi/XSValue.hpp b/src/xercesc/framework/psvi/XSValue.hpp
index a89eacca7a3e554d14bf0eef9969fda24a570b3c..aee61c652a272d377b1b385c52174b607bb4049e 100644
--- a/src/xercesc/framework/psvi/XSValue.hpp
+++ b/src/xercesc/framework/psvi/XSValue.hpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.19  2004/12/23 16:11:21  cargilld
+ * Various XSValue updates: use ulong for postiveInteger; reset date fields to zero; modifty XSValueTest to test the returned value from getActualValue.
+ *
  * Revision 1.18  2004/12/10 10:37:55  cargilld
  * Fix problem with hexbin::decode and use XMLByte instead of XMLCh for output of decoding.
  *
@@ -247,7 +250,7 @@ public:
     //----------------------------------
     /** public data */
 
-    struct {
+    struct XSValue_Data {
 
         DataType f_datatype;
         
diff --git a/tests/XSValueTest/XSValueTest.cpp b/tests/XSValueTest/XSValueTest.cpp
index 3df6bdbd3019e03c080072a0af4e441006fe6279..5d28b54a8af70326c1da64a9d63c69520c96ae32 100644
--- a/tests/XSValueTest/XSValueTest.cpp
+++ b/tests/XSValueTest/XSValueTest.cpp
@@ -17,6 +17,9 @@
 /*
 * $Id$
 * $Log$
+* Revision 1.13  2004/12/23 16:11:21  cargilld
+* Various XSValue updates: use ulong for postiveInteger; reset date fields to zero; modifty XSValueTest to test the returned value from getActualValue.
+*
 * Revision 1.12  2004/11/14 19:02:21  peiyongz
 * error status for numeric data types tested
 *
@@ -71,6 +74,7 @@
 #endif
 
 #include <stdio.h>
+#include <math.h>
 
 #include <xercesc/framework/psvi/XSValue.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
@@ -86,7 +90,7 @@ static const bool  EXP_RET_CANREP_FALSE = false;
 static const XSValue::Status DONT_CARE = XSValue::st_UnknownType;
 static bool  errSeen = false;
 
-const XMLCh* getDataTypeString(const XSValue::DataType dt)
+static const XMLCh* getDataTypeString(const XSValue::DataType dt)
 {
     switch(dt)
     {
@@ -127,7 +131,7 @@ const XMLCh* getDataTypeString(const XSValue::DataType dt)
     case XSValue::dt_QName:
         return SchemaSymbols::fgDT_QNAME; 
     case XSValue::dt_NOTATION:
-        XMLUni::fgNotationString;   
+        return XMLUni::fgNotationString;   
     case XSValue::dt_normalizedString:
         return SchemaSymbols::fgDT_NORMALIZEDSTRING; 
     case XSValue::dt_token:
@@ -183,7 +187,169 @@ const XMLCh* getDataTypeString(const XSValue::DataType dt)
     }
 }
 
-char* getStatusString(const XSValue::Status status)
+static bool compareActualValue( const XSValue::DataType             datatype
+                              , const XSValue::XSValue_Data         actValue
+                              , const XSValue::XSValue_Data         expValue)
+{
+    switch (datatype) {                        
+        case XSValue::dt_boolean:
+            if (actValue.fValue.f_bool == expValue.fValue.f_bool)
+                return true;
+            printf("ACTVALUE_TEST Unexpected XSValue for dt_boolean, got %d expected %d\n",
+                    actValue.fValue.f_bool, expValue.fValue.f_bool);
+            return false;
+
+        case XSValue::dt_decimal:
+        case XSValue::dt_double:
+            if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000)
+                return true;
+            printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+                    actValue.fValue.f_double, expValue.fValue.f_double);
+            return false;
+        
+        case XSValue::dt_float:            
+            if (fabs(actValue.fValue.f_float - expValue.fValue.f_float) < fabs(actValue.fValue.f_float)/1000)
+                return true;
+            printf("ACTVALUE_TEST Unexpected XSValue for dt_float, got %f expected %f\n",
+                    actValue.fValue.f_float, expValue.fValue.f_float);
+            return false;
+         
+        case XSValue::dt_duration:
+        case XSValue::dt_dateTime:
+        case XSValue::dt_time:            
+        case XSValue::dt_date:            
+        case XSValue::dt_gYearMonth:           
+        case XSValue::dt_gYear:            
+        case XSValue::dt_gMonthDay:           
+        case XSValue::dt_gDay:            
+        case XSValue::dt_gMonth:
+            if (actValue.fValue.f_datetime.f_year   == expValue.fValue.f_datetime.f_year   &&
+                actValue.fValue.f_datetime.f_month  == expValue.fValue.f_datetime.f_month  &&
+                actValue.fValue.f_datetime.f_day    == expValue.fValue.f_datetime.f_day    &&
+                actValue.fValue.f_datetime.f_hour   == expValue.fValue.f_datetime.f_hour   &&
+                actValue.fValue.f_datetime.f_min    == expValue.fValue.f_datetime.f_min    &&
+                actValue.fValue.f_datetime.f_second == expValue.fValue.f_datetime.f_second &&
+                (fabs(actValue.fValue.f_datetime.f_milisec  - expValue.fValue.f_datetime.f_milisec) < 0.01))
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue\n", StrX(getDataTypeString(datatype)).localForm());                    
+            printf(" Actual year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n",
+                actValue.fValue.f_datetime.f_year, actValue.fValue.f_datetime.f_month, actValue.fValue.f_datetime.f_day,
+                actValue.fValue.f_datetime.f_hour, actValue.fValue.f_datetime.f_min, actValue.fValue.f_datetime.f_second, actValue.fValue.f_datetime.f_milisec);
+            printf(" Expect year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n",
+                expValue.fValue.f_datetime.f_year, expValue.fValue.f_datetime.f_month, expValue.fValue.f_datetime.f_day,
+                expValue.fValue.f_datetime.f_hour, expValue.fValue.f_datetime.f_min, expValue.fValue.f_datetime.f_second, expValue.fValue.f_datetime.f_milisec);
+            return false;  
+                   
+        case XSValue::dt_hexBinary:
+            // in the tests in this file the hexBinary data is always 2 long...
+            if (actValue.fValue.f_byteVal[0] == expValue.fValue.f_byteVal[0] &&
+                actValue.fValue.f_byteVal[1] == expValue.fValue.f_byteVal[1]) 
+                return true;
+            printf("ACTVALUE_TEST Unexpected hexBinary value\n");
+            printf(" Actual Value = %x:%x\n",actValue.fValue.f_byteVal[0],actValue.fValue.f_byteVal[1]);
+            printf(" Expect Value = %x:%x\n",expValue.fValue.f_byteVal[0],expValue.fValue.f_byteVal[1]);    
+            return false;
+
+        case XSValue::dt_base64Binary:
+            // in the tests in this file the base64Binary data is always 9 long (XMLByte[9])
+            // however, a zero byte is used to indicate when the smaller data stream is empty
+            {
+                for (unsigned int i=0; i<9; i++)
+                {
+                    if (!expValue.fValue.f_byteVal[i])
+                        return true;
+                    if (actValue.fValue.f_byteVal[i] != expValue.fValue.f_byteVal[i])
+                    {
+                        printf("ACTVALUE_TEST Unexpected base64Binary value for byte %d\n", i);
+                        printf(" Actual Value = %x\n",actValue.fValue.f_byteVal[i]);
+                        printf(" Expect Value = %x\n",expValue.fValue.f_byteVal[i]);    
+                        return false;
+                    }
+                }
+                return true;
+            }
+
+        case XSValue::dt_string:
+        case XSValue::dt_anyURI:            
+        case XSValue::dt_QName:           
+        case XSValue::dt_NOTATION:          
+        case XSValue::dt_normalizedString:            
+        case XSValue::dt_token:            
+        case XSValue::dt_language:            
+        case XSValue::dt_NMTOKEN:            
+        case XSValue::dt_NMTOKENS:            
+        case XSValue::dt_Name:            
+        case XSValue::dt_NCName:            
+        case XSValue::dt_ID:            
+        case XSValue::dt_IDREF:           
+        case XSValue::dt_IDREFS:            
+        case XSValue::dt_ENTITY:           
+        case XSValue::dt_ENTITIES:
+            printf("ACTVALUE_TEST no Actual Value for datatype %s\n", StrX(getDataTypeString(datatype)).localForm());
+            return false;
+
+        case XSValue::dt_integer:
+        case XSValue::dt_nonPositiveInteger:
+        case XSValue::dt_negativeInteger:            
+        case XSValue::dt_long:            
+            if (actValue.fValue.f_long == expValue.fValue.f_long)
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                    actValue.fValue.f_long, expValue.fValue.f_long);
+            return false;
+                                       
+        case XSValue::dt_int:
+            if (actValue.fValue.f_int == expValue.fValue.f_int)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_int XSValue, got %d expected %d\n",
+                    actValue.fValue.f_int, expValue.fValue.f_int);
+            return false;
+        case XSValue::dt_short:
+            if (actValue.fValue.f_short == expValue.fValue.f_short)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_short XSValue, got %d expected %d\n",
+                    actValue.fValue.f_short, expValue.fValue.f_short);
+            return false;
+        case XSValue::dt_byte:
+            if (actValue.fValue.f_char == expValue.fValue.f_char)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_byte XSValue, got %d expected %d\n",
+                    actValue.fValue.f_char, expValue.fValue.f_char);
+            return false; 
+        case XSValue::dt_nonNegativeInteger:
+        case XSValue::dt_unsignedLong:
+        case XSValue::dt_positiveInteger:
+            if (actValue.fValue.f_ulong == expValue.fValue.f_ulong)
+                return true;
+            printf("ACTVALUE_TEST Unexpected %s XSValue, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+                    actValue.fValue.f_ulong, expValue.fValue.f_ulong);
+            return false;                    
+        case XSValue::dt_unsignedInt:
+            if (actValue.fValue.f_uint == expValue.fValue.f_uint)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedIntXSValue, got %d expected %d\n",
+                    actValue.fValue.f_uint, expValue.fValue.f_uint);
+            return false;
+        case XSValue::dt_unsignedShort:
+            if (actValue.fValue.f_ushort == expValue.fValue.f_ushort)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedShort XSValue, got %d expected %d\n",
+                    actValue.fValue.f_ushort, expValue.fValue.f_ushort);
+            return false; 
+        case XSValue::dt_unsignedByte:
+            if (actValue.fValue.f_uchar == expValue.fValue.f_uchar)
+                return true;
+            printf("ACTVALUE_TEST Unexpected dt_unsignedByte XSValue, got %d expected %d\n",
+                    actValue.fValue.f_uchar, expValue.fValue.f_uchar);
+            return false;           
+        default:
+            printf("ACTVALUE_TEST Unexpected datatype\n");
+            return false;
+    }
+}
+
+
+static char* getStatusString(const XSValue::Status status)
 {
     switch (status)
     { 
@@ -304,6 +470,7 @@ void ACTVALUE_TEST(  const char*                  const  data
                    ,       bool                          toValidate
                    ,       bool                          expRetValue
                    , const XSValue::Status               expStatus
+                   , const XSValue::XSValue_Data         expValue
                     )
 {
     XSValue::Status myStatus = XSValue::st_Init;
@@ -322,9 +489,12 @@ void ACTVALUE_TEST(  const char*                  const  data
             printf("ACTVALUE_TEST XSValue returned: data=<%s>, datatype=<%s>\n",
                     data, StrX(getDataTypeString(datatype)).localForm());
             errSeen = true;
-        }                                                                            
-
-        delete actRetValue;
+        }      
+        else if (!compareActualValue(datatype, actRetValue->fData, expValue))
+        {
+            errSeen = true;
+        } 
+        delete actRetValue;       
     }
     else 
     {
@@ -347,7 +517,7 @@ void ACTVALUE_TEST(  const char*                  const  data
     }
 }
 #else
-#define ACTVALUE_TEST(data, datatype, toValidate, expRetValue, expStatus)              \
+#define ACTVALUE_TEST(data, datatype, toValidate, expRetValue, expStatus, expValue)    \
 {                                                                                      \
     XSValue::Status myStatus = XSValue::st_Init;                                       \
     XSValue* actRetValue = XSValue::getActualValue(                                    \
@@ -364,6 +534,9 @@ void ACTVALUE_TEST(  const char*                  const  data
                   ,__LINE__, data, StrX(getDataTypeString(datatype)).localForm());     \
             errSeen = true;                                                            \
        }                                                                               \
+       else if (!compareActualValue(datatype, actRetValue->fData, expValue)) {         \
+            errSeen = true;                                                            \
+       }                                                                               \
        delete actRetValue;                                                             \
     }                                                                                  \
     else {                                                                             \
@@ -608,6 +781,17 @@ void test_dt_decimal()
     const char lex_iv_1[]="12b34.456";
     const char lex_iv_2[]="1234.56.789";
 
+    XSValue::XSValue_Data act_v_ran_v_1;   act_v_ran_v_1.fValue.f_double = (double)1234.567;
+    XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_double = (double)18446744073709551615.999;
+    XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_double = (double)999.18446744073709551615;
+    //XSValue::XSValue_Data act_v_ran64_iv_1;="18446744073709551616.999";
+    //XSValue::XSValue_Data act_v_ran64_iv_2;="999.18446744073709551616";
+
+    XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_double = (double)4294967295.999;
+    XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_double = (double)999.4294967295;
+    //XSValue::XSValue_Data act_v_ran32_iv_1;="4294967296.999";
+    //XSValue::XSValue_Data act_v_ran32_iv_2;="999.4294967296";
+   
 /***
  * 3.2.3.2 Canonical representation
  *
@@ -686,22 +870,22 @@ void test_dt_decimal()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE); 
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_1); 
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
         //ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001);
         //ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_1);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
         //ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001);
         //ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1);
     }
 
     /***
@@ -768,6 +952,12 @@ void test_dt_float()
     const char lex_v_ran_v_3[]="+1.175494351e-38";
     const char lex_v_ran_v_4[]="-1.175494351e-38";
 
+    XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_float = (float)1234.e+10;
+    XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_float = (float)+3.402823466e+38;
+    XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_float = (float)-3.402823466e+38;
+    XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_float = (float)+1.175494351e-38;
+    XSValue::XSValue_Data act_v_ran_v_4; act_v_ran_v_4.fValue.f_float = (float)-1.175494351e-38;
+
     const char lex_v_ran_iv_1[]="+3.402823466e+39";
     const char lex_v_ran_iv_2[]="-3.402823466e+39";
     const char lex_v_ran_iv_3[]="+1.175494351e-39";
@@ -865,21 +1055,21 @@ void test_dt_float()
         toValidate = ( 0 == i) ? true : false;
 
         // lexical valid, range valid
-        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3);
+        ACTVALUE_TEST(lex_v_ran_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4);
 
         // lexical valid, range invalid
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
         // lexical invalid
-        ACTVALUE_TEST(lex_iv_1      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
     }
 
@@ -937,7 +1127,6 @@ void test_dt_float()
     CANREP_TEST(lex_v_ran_iv_4,    dt, toValidate, EXP_RET_CANREP_TRUE,  lex_v_ran_iv_4_canrep,    DONT_CARE);
 
 }
-
 /***
 DBL_EPSILON 2.2204460492503131e-016
 DBL_MAX 1.7976931348623158e+308
@@ -955,6 +1144,12 @@ void test_dt_double()
     const char lex_v_ran_v_3[]="+2.2250738585072014e-308";
     const char lex_v_ran_v_4[]="-2.2250738585072014e-308";
 
+    XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_double = (double)1234.e+10;
+    XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_double = (double)+1.7976931348623158e+308;
+    XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_double = (double)-1.7976931348623158e+308;
+    XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_double = (double)+2.2250738585072014e-308;
+    XSValue::XSValue_Data act_v_ran_v_4; act_v_ran_v_4.fValue.f_double = (double)-2.2250738585072014e-308;
+
     const char lex_v_ran_iv_1[]="+1.7976931348623158e+309";
     const char lex_v_ran_iv_2[]="-1.7976931348623158e+309";
     // on linux, hp, aix, the representable range is around e-324
@@ -1055,21 +1250,21 @@ void test_dt_double()
         toValidate = ( 0 == i) ? true : false;
 
         // lexical valid, range valid
-        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3);
+        ACTVALUE_TEST(lex_v_ran_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4);
 
         // lexical valid, range invalid
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
         // lexical invalid
-        ACTVALUE_TEST(lex_iv_1      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2      , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
     }
 
@@ -1151,6 +1346,12 @@ void test_dt_integer()
     const char lex_v_ran32_iv_1[]="+2147483648";
     const char lex_v_ran32_iv_2[]="-2147483649";
 
+    XSValue::XSValue_Data act_v_ran_v_1;   act_v_ran_v_1.fValue.f_long = (long)1234;
+    XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_long = (long)+9223372036854775807;
+    XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808;
+    XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_long = (long)+2147483647;
+    XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_long = (long)-2147483648;
+
     const char lex_v_ran64_v_1_canrep[]="9223372036854775807";
     const char lex_v_ran64_v_2_canrep[]="-9223372036854775808";
     const char lex_v_ran64_iv_1_canrep[]="9223372036854775808";
@@ -1225,22 +1426,22 @@ void test_dt_integer()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE); 
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_1); 
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_1);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
     }
 
     /***
@@ -1298,6 +1499,10 @@ void test_dt_nonPositiveInteger()
     const char lex_v_ran32_v_2[]="-2147483648";
     const char lex_v_ran32_iv_2[]="-2147483649";
 
+    XSValue::XSValue_Data act_v_ran_v_1;     act_v_ran_v_1.fValue.f_long = (long)-1234;
+    XSValue::XSValue_Data act_v_ran64_v_2;   act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808;
+    XSValue::XSValue_Data act_v_ran32_v_2;   act_v_ran32_v_2.fValue.f_long = (long)-2147483648;
+
     const char lex_v_ran64_v_2_canrep[]="-9223372036854775808";
     const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809";
 
@@ -1371,18 +1576,18 @@ void test_dt_nonPositiveInteger()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
     }
 
     /***
@@ -1438,6 +1643,10 @@ void test_dt_negativeInteger()
     const char lex_v_ran32_v_2[]="-2147483648";
     const char lex_v_ran32_iv_2[]="-2147483649";
 
+    XSValue::XSValue_Data act_v_ran_v_1;     act_v_ran_v_1.fValue.f_long = (long)-1234;
+    XSValue::XSValue_Data act_v_ran64_v_2;   act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808;
+    XSValue::XSValue_Data act_v_ran32_v_2;   act_v_ran32_v_2.fValue.f_long = (long)-2147483648;
+
     const char lex_v_ran64_v_2_canrep[]="-9223372036854775808";
     const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809";
 
@@ -1508,18 +1717,18 @@ void test_dt_negativeInteger()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_2);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2);
     }
 
     /***
@@ -1576,6 +1785,12 @@ void test_dt_long()
     const char lex_v_ran32_iv_1[]="+2147483648";
     const char lex_v_ran32_iv_2[]="-2147483649";
 
+    XSValue::XSValue_Data act_v_ran_v_1;     act_v_ran_v_1.fValue.f_long = (long)1234;
+    XSValue::XSValue_Data act_v_ran64_v_1;   act_v_ran64_v_1.fValue.f_long = (long)+9223372036854775807;
+    XSValue::XSValue_Data act_v_ran64_v_2;   act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808;
+    XSValue::XSValue_Data act_v_ran32_v_1;   act_v_ran32_v_1.fValue.f_long = (long)+2147483647;
+    XSValue::XSValue_Data act_v_ran32_v_2;   act_v_ran32_v_2.fValue.f_long = (long)-2147483648;
+
     const char lex_v_ran64_v_1_canrep[]="9223372036854775807";
     const char lex_v_ran64_v_2_canrep[]="-9223372036854775808";
     const char lex_v_ran64_iv_1_canrep[]="9223372036854775808";
@@ -1652,22 +1867,22 @@ void test_dt_long()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE); 
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_1); 
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_1);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
     }
 
     /***
@@ -1729,6 +1944,10 @@ void test_dt_int()
     const char lex_v_ran_iv_1[]="+2147483648";
     const char lex_v_ran_iv_2[]="-2147483649";
 
+    XSValue::XSValue_Data act_v_ran_v_0;   act_v_ran_v_0.fValue.f_int = (int)1234;    
+    XSValue::XSValue_Data act_v_ran_v_1;   act_v_ran_v_1.fValue.f_int = (int)+2147483647;
+    XSValue::XSValue_Data act_v_ran_v_2;   act_v_ran_v_2.fValue.f_int = (int)-2147483648;
+
     const char lex_v_ran_v_1_canrep[]="2147483647";
     const char lex_v_ran_v_2_canrep[]="-2147483648";
     const char lex_v_ran_iv_1_canrep[]="2147483648";
@@ -1805,15 +2024,15 @@ void test_dt_int()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -1878,6 +2097,10 @@ void test_dt_short()
     const char lex_v_ran_iv_1[]="+32768";
     const char lex_v_ran_iv_2[]="-32769";
 
+    XSValue::XSValue_Data act_v_ran_v_0;   act_v_ran_v_0.fValue.f_short = (short)1234;    
+    XSValue::XSValue_Data act_v_ran_v_1;   act_v_ran_v_1.fValue.f_short = (short)+32767;
+    XSValue::XSValue_Data act_v_ran_v_2;   act_v_ran_v_2.fValue.f_short = (short)-32768;
+
     const char lex_v_ran_v_1_canrep[]="32767";
     const char lex_v_ran_v_2_canrep[]="-32768";
     const char lex_v_ran_iv_1_canrep[]="32768";
@@ -1955,15 +2178,15 @@ void test_dt_short()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -2028,6 +2251,10 @@ void test_dt_byte()
     const char lex_v_ran_iv_1[]="+128";
     const char lex_v_ran_iv_2[]="-129";
 
+    XSValue::XSValue_Data act_v_ran_v_0;   act_v_ran_v_0.fValue.f_char = (char)12;    
+    XSValue::XSValue_Data act_v_ran_v_1;   act_v_ran_v_1.fValue.f_char = (char)+127;
+    XSValue::XSValue_Data act_v_ran_v_2;   act_v_ran_v_2.fValue.f_char = (char)-128;
+
     const char lex_v_ran_v_1_canrep[]="127";
     const char lex_v_ran_v_2_canrep[]="-128";
     const char lex_v_ran_iv_1_canrep[]="128";
@@ -2105,15 +2332,15 @@ void test_dt_byte()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -2171,14 +2398,18 @@ void test_dt_nonNegativeInteger()
     const char lex_v_ran_v_1[]="1234";
     const char lex_v_ran_iv_1[]="-1";
 
-    const char lex_v_ran64_v_2[]="+9223372036854775807";
-    const char lex_v_ran64_iv_2[]="+9223372036854775808";
+    const char lex_v_ran64_v_2[]="+18446744073709551615";
+    const char lex_v_ran64_iv_2[]="+18446744073709551616";
 
-    const char lex_v_ran32_v_2[]="2147483647";
-    const char lex_v_ran32_iv_2[]="2147483648";
+    const char lex_v_ran32_v_2[]="4294967295";
+    const char lex_v_ran32_iv_2[]="4294967296";
 
-    const char lex_v_ran64_v_2_canrep[]="9223372036854775807";
-    const char lex_v_ran64_iv_2_canrep[]="9223372036854775808";
+    XSValue::XSValue_Data act_v_ran_v_1;    act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234;    
+    XSValue::XSValue_Data act_v_ran64_v_2;  act_v_ran64_v_2.fValue.f_ulong = (unsigned long)+18446744073709551615;
+    XSValue::XSValue_Data act_v_ran32_v_2;  act_v_ran32_v_2.fValue.f_ulong = (unsigned long)4294967295;
+
+    const char lex_v_ran64_v_2_canrep[]="18446744073709551615";
+    const char lex_v_ran64_iv_2_canrep[]="18446744073709551616";
 
     const char lex_iv_1[]="12b34.456";
     const char lex_iv_2[]="1234b56";
@@ -2250,18 +2481,18 @@ void test_dt_nonNegativeInteger()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
     }
 
     /***
@@ -2321,6 +2552,12 @@ void test_dt_unsignedLong()
     const char lex_v_ran32_iv_1[]="4294967296";
     const char lex_v_ran32_iv_2[]="-1";
 
+    XSValue::XSValue_Data act_v_ran_v_1;    act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234;    
+    XSValue::XSValue_Data act_v_ran64_v_1;  act_v_ran64_v_1.fValue.f_ulong = (unsigned long)+18446744073709551615;
+    XSValue::XSValue_Data act_v_ran64_v_2;  act_v_ran64_v_2.fValue.f_ulong = (unsigned long)0;
+    XSValue::XSValue_Data act_v_ran32_v_1;  act_v_ran32_v_1.fValue.f_ulong = (unsigned long)+4294967295;
+    XSValue::XSValue_Data act_v_ran32_v_2;  act_v_ran32_v_2.fValue.f_ulong = (unsigned long)0;
+
     const char lex_v_ran64_v_1_canrep[]="18446744073709551615";
     const char lex_v_ran64_v_2_canrep[]="0";
     const char lex_v_ran64_iv_1_canrep[]="18446744073709551616";
@@ -2397,22 +2634,22 @@ void test_dt_unsignedLong()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE); 
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_1); 
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran32_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_1);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1);
     }
 
     /***
@@ -2475,6 +2712,10 @@ void test_dt_unsignedInt()
     const char lex_v_ran_iv_1[]="4294967296";
     const char lex_v_ran_iv_2[]="-1";
 
+    XSValue::XSValue_Data act_v_ran_v_0;  act_v_ran_v_0.fValue.f_uint = (unsigned int)1234;    
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_uint = (unsigned int)+4294967295;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_uint = (unsigned int)0;
+   
     const char lex_v_ran_v_1_canrep[]="4294967295";
     const char lex_v_ran_v_2_canrep[]="0";
     const char lex_v_ran_iv_1_canrep[]="4294967296";
@@ -2550,15 +2791,15 @@ void test_dt_unsignedInt()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -2621,6 +2862,10 @@ void test_dt_unsignedShort()
     const char lex_v_ran_iv_1[]="+65536";
     const char lex_v_ran_iv_2[]="-1";
 
+    XSValue::XSValue_Data act_v_ran_v_0;  act_v_ran_v_0.fValue.f_ushort = (unsigned short)1234;    
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_ushort = (unsigned short)+65535;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_ushort = (unsigned short)0;
+   
     const char lex_v_ran_v_1_canrep[]="65535";
     const char lex_v_ran_v_2_canrep[]="0";
     const char lex_v_ran_iv_1_canrep[]="65536";
@@ -2696,15 +2941,15 @@ void test_dt_unsignedShort()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -2767,6 +3012,10 @@ void test_dt_unsignedByte()
     const char lex_v_ran_iv_1[]="+256";
     const char lex_v_ran_iv_2[]="-1";
 
+    XSValue::XSValue_Data act_v_ran_v_0;  act_v_ran_v_0.fValue.f_uchar = (unsigned char)123;    
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_uchar = (unsigned char)+255;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_uchar = (unsigned char)0;
+
     const char lex_v_ran_v_1_canrep[]="255";
     const char lex_v_ran_v_2_canrep[]="0";
     const char lex_v_ran_iv_1_canrep[]="256";
@@ -2842,15 +3091,15 @@ void test_dt_unsignedByte()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_0,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_v_ran_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_ran_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
     }
 
     /***
@@ -2908,14 +3157,18 @@ void test_dt_positiveInteger()
     const char lex_v_ran_v_1[]="1234";
     const char lex_v_ran_iv_1[]="0";
 
-    const char lex_v_ran64_v_2[]="+9223372036854775807";
-    const char lex_v_ran64_iv_2[]="+9223372036854775808";
+    const char lex_v_ran64_v_2[]="+18446744073709551615";
+    const char lex_v_ran64_iv_2[]="+18446744073709551616";
+
+    const char lex_v_ran32_v_2[]="4294967295";
+    const char lex_v_ran32_iv_2[]="4294967296";
 
-    const char lex_v_ran32_v_2[]="2147483647";
-    const char lex_v_ran32_iv_2[]="2147483648";
+    XSValue::XSValue_Data act_v_ran_v_1;    act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234;    
+    XSValue::XSValue_Data act_v_ran64_v_2;  act_v_ran64_v_2.fValue.f_ulong = (unsigned long)+18446744073709551615;
+    XSValue::XSValue_Data act_v_ran32_v_2;  act_v_ran32_v_2.fValue.f_ulong = (unsigned long)+4294967295;
 
-    const char lex_v_ran64_v_2_canrep[]="9223372036854775807";
-    const char lex_v_ran64_iv_2_canrep[]="9223372036854775808";
+    const char lex_v_ran64_v_2_canrep[]="18446744073709551615";
+    const char lex_v_ran64_iv_2_canrep[]="18446744073709551616";
 
     const char lex_iv_1[]="12b34.456";
     const char lex_iv_2[]="1234b56";
@@ -2986,18 +3239,18 @@ void test_dt_positiveInteger()
         //validation on/off
         toValidate = ( 0 == i) ? true : false;
 
-        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_ran_v_1,    dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
 
 #if defined(XML_BITSTOBUILD_64)
-        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #else
-        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003);
+        ACTVALUE_TEST(lex_v_ran32_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran32_v_2);
+        ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2);
 #endif
 
-        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
+        ACTVALUE_TEST(lex_iv_2,         dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_2);
     }
 
     /***
@@ -3049,6 +3302,11 @@ void test_dt_boolean()
     const char lex_v_3[]="true";
     const char lex_v_4[]="false";
 
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_bool = true;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_bool = false;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_bool = true;
+    XSValue::XSValue_Data act_v_ran_v_4;  act_v_ran_v_4.fValue.f_bool = false;
+
     const char lex_iv_1[]="2";
 
     const char lex_v_1_canrep[]="true";
@@ -3107,13 +3365,13 @@ void test_dt_boolean()
         toValidate = ( 0 == i) ? true : false;
 
         // lexical valid
-        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(lex_v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
+        ACTVALUE_TEST(lex_v_4,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_4);
 
         // lexical invalid
-        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3163,6 +3421,15 @@ void test_dt_hexBinary()
     const char lex_iv_1[]="0gb7";
     const char lex_iv_2[]="123";
 
+    XSValue::XSValue_Data act_v_ran_v_1;  
+    XSValue::XSValue_Data act_v_ran_v_2;
+    act_v_ran_v_1.fValue.f_byteVal = new XMLByte[2];
+    act_v_ran_v_1.fValue.f_byteVal[0] = 0xf;
+    act_v_ran_v_1.fValue.f_byteVal[1] = 0xb7;    
+    act_v_ran_v_2.fValue.f_byteVal = new XMLByte[2];
+    act_v_ran_v_2.fValue.f_byteVal[0] = 0x12;
+    act_v_ran_v_2.fValue.f_byteVal[1] = 0x34;    
+
     const char lex_v_1_canrep[]="0FB7";
     const char lex_v_2_canrep[]="1234";
 
@@ -3218,12 +3485,12 @@ void test_dt_hexBinary()
         toValidate = ( 0 == i) ? true : false;
 
         // lexical valid
-        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
 
         // lexical invalid
-        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3272,9 +3539,34 @@ void test_dt_base64Binary()
     const char lex_iv_2[]="134xcv56gui";
     const char lex_iv_1[]="wxtz8e4";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    //actual values:
+    //"134x cv56 gui0"  :     D7 7E 31 72 FE 7A 82 E8 B4
+    //"wxtz 8e4k"       :     C3 1B 73 F1 EE 24
+    act_v_ran_v_1.fValue.f_byteVal = new XMLByte[9];
+    act_v_ran_v_1.fValue.f_byteVal[0] = 0xd7;
+    act_v_ran_v_1.fValue.f_byteVal[1] = 0x7e;
+    act_v_ran_v_1.fValue.f_byteVal[2] = 0x31;
+    act_v_ran_v_1.fValue.f_byteVal[3] = 0x72;
+    act_v_ran_v_1.fValue.f_byteVal[4] = 0xfe;
+    act_v_ran_v_1.fValue.f_byteVal[5] = 0x7a;
+    act_v_ran_v_1.fValue.f_byteVal[6] = 0x82;
+    act_v_ran_v_1.fValue.f_byteVal[7] = 0xe8;
+    act_v_ran_v_1.fValue.f_byteVal[8] = 0xb4;
+    act_v_ran_v_2.fValue.f_byteVal = new XMLByte[9];
+    act_v_ran_v_2.fValue.f_byteVal[0] = 0xc3;
+    act_v_ran_v_2.fValue.f_byteVal[1] = 0x1b;
+    act_v_ran_v_2.fValue.f_byteVal[2] = 0x73;
+    act_v_ran_v_2.fValue.f_byteVal[3] = 0xf1;  
+    act_v_ran_v_2.fValue.f_byteVal[4] = 0xee;
+    act_v_ran_v_2.fValue.f_byteVal[5] = 0x24;
+    act_v_ran_v_2.fValue.f_byteVal[6] = 0;
+    act_v_ran_v_2.fValue.f_byteVal[7] = 0;
+    act_v_ran_v_2.fValue.f_byteVal[8] = 0;    
+
     const char lex_v_1_canrep[]="134xcv56gui0";
     const char lex_v_2_canrep[]="wxtz8e4k";
-
  
     /***    
      *
@@ -3319,12 +3611,12 @@ void test_dt_base64Binary()
         toValidate = ( 0 == i) ? true : false;
 
         // lexical valid
-        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(lex_v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
 
         // lexical invalid
-        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3375,6 +3667,32 @@ void test_dt_duration()
     const char iv_2[]="P1Y1M1DT1H1M1X";
     const char iv_3[]="P1Z1M1DT23H";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 1;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 1;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 23;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 59;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 59;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 1;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 1;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 23;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;
     /***    
      *
      * validate
@@ -3420,14 +3738,14 @@ void test_dt_duration()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3484,6 +3802,34 @@ void test_dt_date()
     const char iv_2[]="2001-02-29";
     const char iv_3[]="2001-06-31";
 
+    XSValue::XSValue_Data act_v_ran_v_1;     
+    XSValue::XSValue_Data act_v_ran_v_2;  
+    XSValue::XSValue_Data act_v_ran_v_3;  
+     
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 1991;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 05;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 9999;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 06;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 30;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 99991;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 07;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;    
+
     /***    
      *
      * validate
@@ -3529,14 +3875,14 @@ void test_dt_date()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3593,6 +3939,33 @@ void test_dt_gYearMonth()
     const char iv_2[]="+2000-11";
     const char iv_3[]="2000.90-02";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+    
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 20000;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 02;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 200;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 11;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 2000;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 02;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;  
     /***    
      *
      * validate
@@ -3638,14 +4011,14 @@ void test_dt_gYearMonth()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3702,6 +4075,34 @@ void test_dt_gYear()
     const char iv_2[]="+2000";
     const char iv_3[]="2000.90";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 9999;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = -1999;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;  
+
     /***    
      *
      * validate
@@ -3747,14 +4148,14 @@ void test_dt_gYear()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3811,6 +4212,33 @@ void test_dt_gMonthDay()
     const char iv_2[]="--12-32";
     const char iv_3[]="--02-30";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 1;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 3;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 4;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;  
     /***    
      *
      * validate
@@ -3856,14 +4284,14 @@ void test_dt_gMonthDay()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
     }
 
     /***
@@ -3920,6 +4348,34 @@ void test_dt_gDay()
     const char iv_2[]="---28.00";
     const char iv_3[]="--31";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 28;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;  
+
     /***    
      *
      * validate
@@ -3965,14 +4421,14 @@ void test_dt_gDay()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_2);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_3);
     }
 
     /***
@@ -4029,6 +4485,34 @@ void test_dt_gMonth()
     const char iv_2[]="---02.09";
     const char iv_3[]="--14--";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 2;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 10;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 12;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;
+
     /***    
      *
      * validate
@@ -4074,14 +4558,14 @@ void test_dt_gMonth()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_2);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_3);
     }
 
     /***
@@ -4140,10 +4624,38 @@ void test_dt_dateTime()
     const char iv_4[]="2000-11-30T01:01:01Z99";
     const char iv_5[]="2000-02-28T01:01:01Z10:61";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
     const char v_1_canrep[]="2000-12-31T23:59:59.00389Z";
     const char v_2_canrep[]="2000-10-01T05:10:20Z";
     const char v_3_canrep[]="2000-10-01T17:10:20Z";
 
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 2000;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 12;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 31;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 23;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 59;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 59;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0.00389;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 2000;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 10;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 5;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 10;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 20;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 2000;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 10;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 1;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 17;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 10;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 20;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;
+
  /***
  * E2-41
  *
@@ -4211,16 +4723,16 @@ void test_dt_dateTime()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003);
-        ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1);
     }
 
     /***
@@ -4278,10 +4790,37 @@ void test_dt_time()
     const char iv_4[]="01:01:01Z99";
     const char iv_5[]="01:01:01Z10:61";
 
+    XSValue::XSValue_Data act_v_ran_v_1;
+    XSValue::XSValue_Data act_v_ran_v_2;
+    XSValue::XSValue_Data act_v_ran_v_3;
+
     const char v_1_canrep[]="23:59:59.389Z";
     const char v_2_canrep[]="00:00:00Z";
     const char v_3_canrep[]="23:59:59Z";
 
+    act_v_ran_v_1.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_1.fValue.f_datetime.f_hour    = 23;
+    act_v_ran_v_1.fValue.f_datetime.f_min     = 59;
+    act_v_ran_v_1.fValue.f_datetime.f_second  = 59;
+    act_v_ran_v_1.fValue.f_datetime.f_milisec = 0.389;
+
+    act_v_ran_v_2.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_hour    = 24;
+    act_v_ran_v_2.fValue.f_datetime.f_min     = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_second  = 0;
+    act_v_ran_v_2.fValue.f_datetime.f_milisec = 0;
+
+    act_v_ran_v_3.fValue.f_datetime.f_year    = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_month   = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_day     = 0;
+    act_v_ran_v_3.fValue.f_datetime.f_hour    = 23;
+    act_v_ran_v_3.fValue.f_datetime.f_min     = 59;
+    act_v_ran_v_3.fValue.f_datetime.f_second  = 59;
+    act_v_ran_v_3.fValue.f_datetime.f_milisec = 0;
 /***
  * 3.2.8.2 Canonical representation
  *
@@ -4342,16 +4881,16 @@ void test_dt_time()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_TRUE,  DONT_CARE, act_v_ran_v_3);
 
         //  invalid
-        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002);
-        ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003);
-        ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003);
+        ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1);
+        ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1);
     }
 
     /***
@@ -4399,6 +4938,7 @@ void test_dt_string()
     bool  toValidate = true;
 
     const char v_1[]="mystring";
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
 
     /***    
      *
@@ -4440,7 +4980,7 @@ void test_dt_string()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
 
         //  invalid
     }
@@ -4486,7 +5026,11 @@ void test_dt_anyURI()
     const char v_1[]="http://www.schemaTest.org/IBMd3_2_17v01";
     const char v_2[]="gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles";
     const char v_3[]="ftp://www.noNamespace.edu";
-  	
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;
+
     const char iv_1[]="+htp://peiyongz@:90";
     const char iv_2[]=">////1.2.3.4.";
     const char iv_3[]="<///www.ibm.9om";
@@ -4536,17 +5080,17 @@ void test_dt_anyURI()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -4598,7 +5142,11 @@ void test_dt_QName()
     const char v_1[]="Ant:Eater";
     const char v_2[]="Minimum_Length";
     const char v_3[]="abcde:a2345";
-  	
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;
+    
     const char iv_1[]="Three:Two:One";
     const char iv_2[]=":my";
     const char iv_3[]="+name";
@@ -4648,17 +5196,17 @@ void test_dt_QName()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal));
+            (toValidate? XSValue::st_FOCA0002: XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -4709,7 +5257,9 @@ void test_dt_NOTATION()
 
     const char v_1[]="http://www.ibm.com/test:notation1";
     const char iv_1[]="invaliduri:notation2";
-  	
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+     
     /***    
      *
      * validate
@@ -4751,7 +5301,7 @@ void test_dt_NOTATION()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
 
         //  invalid
 
@@ -4802,6 +5352,10 @@ void test_dt_normalizedString()
     
     const char iv_1[]="a\tb";
     const char iv_2[]="a\nb";
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;
     
     /***    
      *
@@ -4847,15 +5401,15 @@ void test_dt_normalizedString()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_2);
 
     }
 
@@ -4906,6 +5460,10 @@ void test_dt_token()
     const char v_1[]="4+4=8";
     const char v_2[]="Number2";
     const char v_3[]="someChars=*_-";
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;
     
     const char iv_1[]="a\tb";
     const char iv_2[]="a\nb";
@@ -4956,17 +5514,17 @@ void test_dt_token()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -5023,7 +5581,10 @@ void test_dt_language()
     const char iv_1[]="ja_JP";
     const char iv_2[]="en+US";
     const char iv_3[]="12-en";
-    
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;    
     /***    
      *
      * validate
@@ -5069,17 +5630,17 @@ void test_dt_language()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -5136,7 +5697,10 @@ void test_dt_NMTOKEN()
     const char iv_1[]="#board";
     const char iv_2[]="@com";
     const char iv_3[]=";abc";
-    
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;    
     /***    
      *
      * validate
@@ -5182,17 +5746,17 @@ void test_dt_NMTOKEN()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_2);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_3);
 
     }
 
@@ -5249,6 +5813,10 @@ void test_dt_NMTOKENS()
     const char iv_1[]="#board";
     const char iv_2[]="@com";
     const char iv_3[]=";abc";
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;    
     
     /***    
      *
@@ -5295,17 +5863,17 @@ void test_dt_NMTOKENS()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -5362,6 +5930,10 @@ void test_dt_Name()
     const char iv_1[]="9name";
     const char iv_2[]="-name";
     const char iv_3[]=".name";
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;    
     
     /***    
      *
@@ -5408,17 +5980,17 @@ void test_dt_Name()
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_2);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_3);
 
     }
 
@@ -5475,7 +6047,9 @@ void test_dt_NCName_ID_IDREF_ENTITY(XSValue::DataType dt)
     const char iv_2[]="_Zeerochert:";
     const char iv_3[]="0:07";
 
-   
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;   
     /***    
      *
      * validate
@@ -5521,17 +6095,17 @@ void test_dt_NCName_ID_IDREF_ENTITY(XSValue::DataType dt)
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -5587,7 +6161,10 @@ void test_dt_IDREFS_ENTITIES(XSValue::DataType dt)
     const char iv_1[]=":Four-_.";
     const char iv_2[]="_Zeerochert:";
     const char iv_3[]="0:07";
-     
+
+    XSValue::XSValue_Data act_v_ran_v_1;  act_v_ran_v_1.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_2;  act_v_ran_v_2.fValue.f_strVal = 0;
+    XSValue::XSValue_Data act_v_ran_v_3;  act_v_ran_v_3.fValue.f_strVal = 0;    
     /***    
      *
      * validate
@@ -5633,17 +6210,17 @@ void test_dt_IDREFS_ENTITIES(XSValue::DataType dt)
         toValidate = ( 0 == i) ? true : false;
 
         //  valid
-        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
-        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal);
+        ACTVALUE_TEST(v_1,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1);
+        ACTVALUE_TEST(v_2,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_2);
+        ACTVALUE_TEST(v_3,  dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_3);
 
         //  invalid
         ACTVALUE_TEST(iv_1,  dt, toValidate, EXP_RET_VALUE_FALSE, 
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_2,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
         ACTVALUE_TEST(iv_3,  dt, toValidate, EXP_RET_VALUE_FALSE,
-            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal));
+            (toValidate ? XSValue::st_FOCA0002 : XSValue::st_NoActVal), act_v_ran_v_1);
 
     }
 
@@ -6083,7 +6660,7 @@ int main(int, char* )
         XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
         return 1;
-    }
+    }    
 
     test_dt_string();              
     test_dt_boolean();