Index: tol/btol/bgrammar/nameblock.cpp
===================================================================
--- tol/btol/bgrammar/nameblock.cpp	(revision 137d85fd1baac5bf82f9047c4a4501edbdbc2ace)
+++ tol/btol/bgrammar/nameblock.cpp	(revision 7efd6dda839a6a4c51db8627385ed8f2675db586)
@@ -103,5 +103,6 @@
   nonPrivateMembers_(0),
   requiredPackages_(NULL),
-  doingRebuildFullNameDeep(false)
+  doingRebuildFullNameDeep(false),
+  startedPackage(false)
 {
   SetEmptyKey(public_ ,NULL);
@@ -126,5 +127,6 @@
   nonPrivateMembers_(0),
   requiredPackages_(NULL),
-  doingRebuildFullNameDeep(false)
+  doingRebuildFullNameDeep(false),
+  startedPackage(false)
 {
   SetEmptyKey(public_ ,NULL);
@@ -149,5 +151,6 @@
   nonPrivateMembers_(0),
   requiredPackages_(NULL),
-  doingRebuildFullNameDeep(false)
+  doingRebuildFullNameDeep(false),
+  startedPackage(false)
 {
   short isAssigned = BFSMEM_Hndlr->IsAssigned(this,this->_bfsm_PageNum__);
Index: tol/btol/bgrammar/tol_bnameblock.h
===================================================================
--- tol/btol/bgrammar/tol_bnameblock.h	(revision 137d85fd1baac5bf82f9047c4a4501edbdbc2ace)
+++ tol/btol/bgrammar/tol_bnameblock.h	(revision 7efd6dda839a6a4c51db8627385ed8f2675db586)
@@ -88,4 +88,5 @@
   bool doingRebuildFullNameDeep;
 public:
+  bool startedPackage;
   static bool Initialize();
   static BNameBlock&  Unknown() { return(*unknown_); }
Index: tol/lang/language.cpp
===================================================================
--- tol/lang/language.cpp	(revision 137d85fd1baac5bf82f9047c4a4501edbdbc2ace)
+++ tol/lang/language.cpp	(revision 7efd6dda839a6a4c51db8627385ed8f2675db586)
@@ -1331,7 +1331,22 @@
   BOis::SetRunningUseModule(oldRunningUseModule);
   if(!fai) { return(false); }
-  bool ok = (bool)Real(fai);
+  bool ok = (bool)(Real(fai)!=0);
   DESTROY(fai);
   return(ok);
+}
+
+//--------------------------------------------------------------------
+static void PkgStartActions(const BText& package, const BText path)
+//--------------------------------------------------------------------
+{
+  BText startActionsExpr = package+"::StartActions(0)";
+  bool oldRunningUseModule = BOis::SetRunningUseModule(false);
+  BText oldDir = BDir::GetCurrent();
+  BDir::ChangeCurrent( GetFilePath(path) );
+  BSyntaxObject* startActions = GraReal()->EvaluateExpr(startActionsExpr);
+  BDir::ChangeCurrent(oldDir);
+  BOis::SetRunningUseModule(oldRunningUseModule);
+//Std(BText("\nTRACE startActionsExpr =")+startActionsExpr+" "+((startActions)?"OK":"FAIL")+"\n");
+  DESTROY(startActions);
 }
 
@@ -1366,13 +1381,22 @@
   }
   BSyntaxObject* pkg = GraNameBlock()->FindOperand(package,false);
-  bool ok = pkg!=NULL;
-  if(ok) { return(pkg); }
   BText path = LocalPath(package_version);
 //Std(BText("\nTRACE BPackage::Load 3 path='")+path+"'");
   BDir dirPath = path;
+
+  bool ok = pkg!=NULL;
+  if(ok) { 
+    BNameBlock& nb = NameBlock(pkg);
+    if(!nb.startedPackage)
+    {
+      PkgStartActions(package, path);
+      nb.startedPackage = true;
+    }
+    return(pkg); 
+  }
 //Std(BText("\nTRACE BPackage::Load 3 dirPath='")+dirPath.Name()+"'");
   if(!ok)
   {
-    ok=dirPath.Exist();
+    ok=dirPath.Exist()!=0;
     if(!ok)
     {
@@ -1385,5 +1409,5 @@
         zip.Close();
       }
-      ok=dirPath.Exist();
+      ok=dirPath.Exist()!=0;
     }
   //Std(BText("\nTRACE BPackage::Load 4 ok=")+ok);
@@ -1412,13 +1436,5 @@
           required_ = Cons(pkg, required_);
           BNameBlock::AddGlobalRequiredPackage(package);
-          BText startActionsExpr = package+"::StartActions(0)";
-          bool oldRunningUseModule = BOis::SetRunningUseModule(false);
-          BText oldDir = BDir::GetCurrent();
-          BDir::ChangeCurrent( GetFilePath(path) );
-          BSyntaxObject* startActions = GraReal()->EvaluateExpr(startActionsExpr);
-          BDir::ChangeCurrent(oldDir);
-          BOis::SetRunningUseModule(oldRunningUseModule);
-        //Std(BText("\nTRACE startActionsExpr =")+startActionsExpr+" "+((startActions)?"OK":"FAIL")+"\n");
-          DESTROY(startActions);
+          PkgStartActions(package, path);
         }
       }      
