Index: /trunk/FACT++/src/EventBuilder.c
===================================================================
--- /trunk/FACT++/src/EventBuilder.c	(revision 12409)
+++ /trunk/FACT++/src/EventBuilder.c	(revision 12410)
@@ -1193,11 +1193,46 @@
                      debugRead (i, jrd, rd[i].evtID, rd[i].ftmID, rd[i].runID, 1, tsec, tusec); // i=socket; jrd=#bytes; ievt=eventid; 1=finished event
 
-                  //we have a complete buffer, copy to WORK area
+/*                  //we have a complete buffer, copy to WORK area
                   int jr;
                   roi[0] = ntohs (rd[i].rBuf->S[head_len / 2 + 2]);
-                  for (jr = 0; jr < 9; jr++) {
+                  for (jr = 1; jr < 9; jr++) {
+                     roi[jr] =
+                          ntohs (rd[i].
+                                 rBuf->S[head_len / 2 + 2 + jr * (roi[jr-1] + 4)]);
+             
+				  }
+*/
+                 //we have a complete buffer, copy to WORK area
+                  int jr, kr;
+                  int  checkRoi;
+                  roi[0] = ntohs (rd[i].rBuf->S[head_len / 2 + 2]);
+                  for (kr = 1; kr < 4; kr++)
+                  {
+                      checkRoi = ntohs(rd[i].rBuf->S[head_len/ 2 + 2
+                                                     		        + kr*(roi[0]+4)]);
+                      if (checkRoi != roi[0])
+                      {
+                          snprintf (str, MXSTR, "Inconsistent Roi accross board patches a %d %d %d", kr, checkRoi, roi[0]);
+                          factOut (kError, 1, str);
+                          goto EndBuf;
+                      }
+
+                  }
+                  for (jr = 1; jr < 9; jr++) {
                      roi[jr] =
                         ntohs (rd[i].
-                               rBuf->S[head_len / 2 + 2 + jr * (roi[0] + 4)]);
+                               rBuf->S[head_len / 2 + 2 + 4 * jr * (roi[jr-1] + 4)]);
+                     for (kr = 1; kr < 4; kr++)
+                     {
+                         checkRoi = ntohs(rd[i].rBuf->S[  head_len/2 + 2 //header up to first roi
+                                                        + kr*(roi[jr]+4) //shift up to the next board
+                                                        + 4*jr*(roi[jr-1]+4)]); //shift up to the correct pixel
+                         if (checkRoi != roi[jr])
+                         {
+                             snprintf (str, MXSTR, "Inconsistent Roi accross board patches b %d %d %d %d", kr, jr, roi[jr], checkRoi);
+                             factOut (kError, 1, str);
+                             goto EndBuf;
+                         }
+                     }
                   }
                   //get index into mBuffer for this event (create if needed)
