Index: /trunk/FACT++/src/EventBuilder.c
===================================================================
--- /trunk/FACT++/src/EventBuilder.c	(revision 14733)
+++ /trunk/FACT++/src/EventBuilder.c	(revision 14734)
@@ -1563,6 +1563,5 @@
                    && evtCtrl.pcTime[k0] < g_actTime - 30) {
                   int id = evtCtrl.evtBuf[k0];
-                  snprintf (str, MXSTR, "%5d skip incomplete evt %8d %8d %2d",
-                            mBuffer[id].evNum, evtCtrl.evtBuf[k0], k0,
+                  snprintf (str, MXSTR, "%5d skip incomplete evt %8d %8d %2d", mBuffer[id].evNum, evtCtrl.evtBuf[k0], k0,
                             evtCtrl.evtStat[k0]);
                   factOut (kWarn, 601, str);
@@ -2360,11 +2359,25 @@
       //i.e. max run Id and lastEvt >= 0
       //this condition is sufficient because all pending events were written already in the loop just above
-      unsigned int maxStartedRun = 0;
-      for (j=0;j<MAX_RUN;j++)
+      //actrun
+      uint32_t lastStartedTime = 0;
+      uint32_t runIdFound = 0;
+      if (actrun != 0)
+      {//If we have an active run, look for its start time
+          for (j=0;j<MAX_RUN;j++)
+          {
+              if (runCtrl[j].runId == actrun)
+              {
+                  lastStartedTime = runCtrl[j].lastTime;
+                  runIdFound = 1;
+              }
+          }
+      }
+      else
+          runIdFound = 1;
+
+      if (runIdFound == 0)
       {
-          if ((runCtrl[j].runId > maxStartedRun) &&
-              (runCtrl[j].lastEvt > -1) &&
-			  (runCtrl[j].runId != 0))
-              maxStartedRun = runCtrl[j].runId;
+          snprintf(str, MXSTR, "An Active run (number %ud) has been registered, but it could not be found in the runs list", actrun);
+          factOut(kInfo, 000, str);
       }
 //	  snprintf(str, MXSTR, "Maximum runId: %d", maxStartedRun);
@@ -2376,8 +2389,8 @@
       {
           if ((runCtrl[j].fileId < 0) &&
-              (runCtrl[j].runId < maxStartedRun) &&
+              (runCtrl[j].lastTime < lastStartedTime) &&
 			  (runCtrl[j].runId != 0))
           {
-              snprintf (str, MXSTR, "writeEvt: No file will be opened for run %ud. Last run: %ud (started)", runCtrl[j].runId, maxStartedRun);
+              snprintf (str, MXSTR, "writeEvt: No file will be opened for run %ud. Last run: %ud (started)", runCtrl[j].runId, actrun);
               factOut (kInfo, 000, str);
            ;//TODO notify that this run will never be opened
@@ -2389,5 +2402,5 @@
                  || runCtrl[j].lastTime < g_actTime - 300
                  || runCtrl[j].maxEvt <= runCtrl[j].actEvt
-                 || (runCtrl[j].runId < maxStartedRun && runCtrl[j].runId != 0))) //ETIENNE added the condition at this line. dunno what to do with run 0: skipping it
+                 || (runCtrl[j].lastTime < lastStartedTime && runCtrl[j].runId != 0))) //ETIENNE added the condition at this line. dunno what to do with run 0: skipping it
 {
             if (runCtrl[j].runId == gi_myRun)
