Index: tol/OIS/oiscreator.cpp
===================================================================
--- tol/OIS/oiscreator.cpp	(revision 10adcbf7a5c5690b408af8cf883de1517be45e3b)
+++ tol/OIS/oiscreator.cpp	(revision 1f1b109693ae06cc18e96cf21e0d52de09a3453c)
@@ -1034,11 +1034,36 @@
     {
       EWrite(saveTree,timeset_); 
-      #ifdef WARNING_NON_TREE_NOR_BOUNDED
       Warning(I2("Cannot save virtual definition non bounded TimeSet ",
                  "No se puede salvar la definición virtual del TimeSet ")+v->Identify()+
               I2(" due to its expression is unknown at this evaluation level.",
                  " no acotado porque su expresión es desconocida en este nivel de evaluación.")); 
-      #endif
     }  
+    else
+    {
+      int oldLevel = BGrammar::Level();
+      BGrammar::PutLevel(0);
+      bool oldEnabled = BOut::Disable();
+      BDat numErr0 = TOLErrorTryNumber();
+      BUserTimeSet* aux = (BUserTimeSet*)GraTimeSet()->EvaluateTree(tree); 
+      BDat numErr1 = TOLErrorTryNumber(); 
+      if(oldEnabled) { BOut::Enable(); }
+      DESTROY(aux);
+      if(numErr1>numErr0)
+      {
+        BText expr = Compact(BParser::Unparse(tree,"  ","\n"));
+        if(v->HasName()) { expr = v->Name()+" = "+expr; }
+        Warning(I2("Expression of non bounded TimeSet ",
+                   "La expresión del TimeSet no acotado ")+ 
+                "\n"+expr+";\n"+
+                I2("seems to be dependent on non globally accessible symbols.\n"
+                   "So, just cached data will be available at OIS loading time.\n"
+                   "Current cache interval is ",
+                   "parece depender de símbolos que no son accesibles globalmente.\n"
+                   "Por este motivo, a la hora de cargar el OIS, sólo podrán usarse "
+                   "los datos de la caché, que actualmente abarca el intervalo ")+
+                   "["+beginCache+","+endCache+"]"); 
+      }           
+      BGrammar::PutLevel(oldLevel);
+    }
     saveTree = true;
     EWrite(saveTree,timeset_);
Index: tol/OIS/oisloader.cpp
===================================================================
--- tol/OIS/oisloader.cpp	(revision 10adcbf7a5c5690b408af8cf883de1517be45e3b)
+++ tol/OIS/oisloader.cpp	(revision 1f1b109693ae06cc18e96cf21e0d52de09a3453c)
@@ -1419,11 +1419,10 @@
                      name+"' description='"+description+"')")); 
             }
-            BText expr = Compact(BParser::Unparse(tree,"  ","\n"));
-          //bool oldEnabled = BOut::Disable();
-            BDat numErr0 = TOLErrorNumber();
+            bool oldEnabled = BOut::Disable();
+            BDat numErr0 = TOLErrorTryNumber();
             x = (BUserTimeSet*)GraTimeSet()->EvaluateTree(tree); 
-            BDat numErr1 = TOLErrorNumber();
+            BDat numErr1 = TOLErrorTryNumber();
             if(numErr0<numErr1) { DESTROY(x); }
-          //if(oldEnabled) { BOut::Enable(); }
+            if(oldEnabled) { BOut::Enable(); }
             if(x) 
             { 
@@ -1435,6 +1434,6 @@
                   x->PutCache(h, beginCache, endCache);
                 }
+                x->PutOisTree(tree); 
               }
-              x->PutOisTree(tree); 
               tree->Destroy();
             }
@@ -1442,11 +1441,11 @@
             {
               BText expr = Compact(BParser::Unparse(tree,"  ","\n"));
-             #ifndef NDEBUG
+              if(name.HasName()) { expr = name+" = "+expr; }
               Warning(BText("Cannot rebuild virtual expression of non "
-                      "bounded TimeSet ")+name+"="+expr+ "\nOnly cached "
+                      "bounded TimeSet ")+expr+ "\nOnly cached "
                       "dates will be accessible between ["+beginCache+","+
                       endCache+"]\nTo avoid this problem save just "
-                      "bounded time sets " );
-             #endif
+                      "bounded time sets or use expressions that could "
+                      "be evaluated at OIS loading time." );
               if(tree) { tree->Destroy(); }
             } 
Index: tol/bbasic/out.cpp
===================================================================
--- tol/bbasic/out.cpp	(revision 10adcbf7a5c5690b408af8cf883de1517be45e3b)
+++ tol/bbasic/out.cpp	(revision 1f1b109693ae06cc18e96cf21e0d52de09a3453c)
@@ -233,4 +233,20 @@
 };
 
+//--------------------------------------------------------------------
+BDat& TOLErrorTryNumber()
+//--------------------------------------------------------------------
+{
+  static BDat aux_ = 0;
+  return(aux_);
+};
+
+//--------------------------------------------------------------------
+BDat& TOLWarningTryNumber()
+//--------------------------------------------------------------------
+{
+  static BDat aux_ = 0;
+  return(aux_);
+};
+
 
 //--------------------------------------------------------------------
@@ -427,4 +443,5 @@
 //--------------------------------------------------------------------
 {
+  TOLErrorTryNumber()+=1;
   if(!BOut::IsEnabled() || 
      (!BOut::errorHci_ && !BOut::errorTerm_ && !BOut::errorLog_)) { return; }
@@ -448,4 +465,5 @@
 //--------------------------------------------------------------------
 {
+  TOLWarningTryNumber()+=1;
   if(!BOut::IsEnabled()  || 
     (!BOut::warningHci_ && !BOut::warningTerm_ && !BOut::warningLog_)) { return; }
Index: tol/bbasic/tol_bout.h
===================================================================
--- tol/bbasic/tol_bout.h	(revision 10adcbf7a5c5690b408af8cf883de1517be45e3b)
+++ tol/bbasic/tol_bout.h	(revision 1f1b109693ae06cc18e96cf21e0d52de09a3453c)
@@ -36,4 +36,6 @@
 TOL_API BDat& TOLErrorNumber();
 TOL_API BDat& TOLWarningNumber();
+TOL_API BDat& TOLErrorTryNumber();
+TOL_API BDat& TOLWarningTryNumber();
 
 //--------------------------------------------------------------------
