Index: /trunk/FACT++/src/EventBuilder.c
===================================================================
--- /trunk/FACT++/src/EventBuilder.c	(revision 15470)
+++ /trunk/FACT++/src/EventBuilder.c	(revision 15471)
@@ -1340,5 +1340,5 @@
           evtCtrl[idx].board[board] = board;
           evtCtrl[idx].nBoard++;
-          evtCtrl[idx].evtStat  = evtCtrl[idx].nBoard;
+          evtCtrl[idx].evtStat = evtCtrl[idx].nBoard;
 
           // have we already reported first (partial) event of this run ???
@@ -1424,4 +1424,6 @@
 
           // Check the less likely case: 'useless' or 'delete'
+          // evtState==0 can happen if the event was initialized (some data received)
+          // but the data did not make sense (e.g. inconsistent rois)
           if (evtCtrl[k0].evtStat==0 || evtCtrl[k0].evtStat >= 9000)
           {
@@ -1430,10 +1432,7 @@
 
               if (k0==evtCtrl_frstPtr)
-              {
-                  evtCtrl_frstPtr++;
-                  evtCtrl_frstPtr %= MAX_EVT * MAX_RUN;
-              }
+                  evtCtrl_frstPtr = (evtCtrl_frstPtr+1) % MAX_EVT * MAX_RUN;
               else
-                  factPrintf(kDebug, -1, "Freed a non-first slot");
+                  factPrintf(kError, -1, "Freed a non-first slot");
 
               gj.evtWrite++;
@@ -1546,5 +1545,5 @@
          for (int k0=evtCtrl_frstPtr; k0!=evtCtrl_lastPtr; k0++, k0 %= MAX_EVT*MAX_RUN)
          {
-             if (evtCtrl[k0].evtStat > minclear)
+             if (evtCtrl[k0].evtStat==0 || evtCtrl[k0].evtStat > minclear)
              {
                  mBufFree(k0);   //event written--> free memory
@@ -1552,14 +1551,13 @@
 
                  if (k0==evtCtrl_frstPtr)
-                 {
-                     evtCtrl_frstPtr++;
-                     evtCtrl_frstPtr %= MAX_EVT * MAX_RUN;
-                 }
+                     evtCtrl_frstPtr = (evtCtrl_frstPtr+1) % MAX_EVT * MAX_RUN;
                  else
-                     factPrintf(kDebug, -1, "Freed a non-first slot");
+                     factPrintf(kError, -1, "Freed a non-first slot");
+
+                 continue;
              }
-             else
-                 if (evtCtrl[k0].evtStat > 0)
-                     numclear++;      //writing is still ongoing...
+
+             if (evtCtrl[k0].evtStat > 0)
+                 numclear++;      //writing is still ongoing...
          }
 
