Index: tol/OIS/oisloader.cpp
===================================================================
--- tol/OIS/oisloader.cpp	(revision fb786f4a1cad865e63cf036d048503e2fb1349bd)
+++ tol/OIS/oisloader.cpp	(revision dc4d2e62d42d28366e4c2cba762ca5ecbf293fdb)
@@ -1363,5 +1363,8 @@
                 x->GetDataBuffer() = d;
                 x->PutFirstCache(beginCache);
-                x->PutOisTree(tree);
+                if(!x->GetOisTree())
+                {
+                  x->PutOisTree(tree);
+                }
                 tree->Destroy();
               }
@@ -1399,4 +1402,7 @@
           BINT64 offset;
           ERead(offset, object_);
+                    if(name=="Cuatrimestral")
+                      printf("");
+
           timeset_->SetPos(offset);
           BDate inf, sup, beginCache, endCache;
@@ -1411,7 +1417,8 @@
           char loadTree;
           ERead(loadTree,timeset_);
+          List* tree = NULL;
           if(loadTree)
           {
-            List* tree = ReadTree(timeset_);
+            tree = ReadTree(timeset_);
             if(!tree) 
             { 
@@ -1434,7 +1441,5 @@
                   x->PutCache(h, beginCache, endCache);
                 }
-                x->PutOisTree(tree); 
               }
-              tree->Destroy();
             }
             else 
@@ -1448,5 +1453,4 @@
                       "bounded time sets or use expressions that could "
                       "be evaluated at OIS loading time." );
-              if(tree) { tree->Destroy(); }
             } 
           }
@@ -1461,5 +1465,12 @@
           }
           else                
-          { result = x; }
+          { 
+            result = x; 
+          }
+          if(tree) 
+          {
+            if(result && !result->GetOisTree()) { result->PutOisTree(tree); }
+            tree->Destroy(); 
+          }
         }
         BNameBlock::SetBuilding(oldBuilding);
Index: tol/btol/bgrammar/graimp.cpp
===================================================================
--- tol/btol/bgrammar/graimp.cpp	(revision fb786f4a1cad865e63cf036d048503e2fb1349bd)
+++ tol/btol/bgrammar/graimp.cpp	(revision dc4d2e62d42d28366e4c2cba762ca5ecbf293fdb)
@@ -873,13 +873,4 @@
   }
 
-  TRACE_SHOW_MEDIUM(fun,"6");
-  if(result && !result->GetOisTree()) 
-  { 
-    TRACE_SHOW_MEDIUM(fun,"6.1");
-    result->PutOisTree(tre); 
-  }
-
-//TRACE_SHOW_LOW(fun,BText("End with result type: ")<<BText((result!=NULL)?result->Grammar()->Name():BText("NULL")));
-  TRACE_SHOW_LOW(fun,"END");
   if(result && (result->Grammar()==GraNameBlock()))
   {
@@ -908,4 +899,11 @@
     if(!cls->isDefined_) { result = NULL; }
   }
+  if(result && !result->GetOisTree()) 
+  { 
+    TRACE_SHOW_MEDIUM(fun,"6.1");
+    result->PutOisTree(tre); 
+  }
+//TRACE_SHOW_LOW(fun,BText("End with result type: ")<<BText((result!=NULL)?result->Grammar()->Name():BText("NULL")));
+  TRACE_SHOW_LOW(fun,"END");
   return(result);
 }
Index: tol/btol/bgrammar/oprimp.cpp
===================================================================
--- tol/btol/bgrammar/oprimp.cpp	(revision fb786f4a1cad865e63cf036d048503e2fb1349bd)
+++ tol/btol/bgrammar/oprimp.cpp	(revision dc4d2e62d42d28366e4c2cba762ca5ecbf293fdb)
@@ -825,5 +825,5 @@
       }
       TRACE_SHOW_MEDIUM(fun," 24");
-      if(result)
+      if(result && !result->GetOisTree())
       {
         result->PutOisTree(tre); 
