Index: /trunk/FACT++/src/EventBuilder.c
===================================================================
--- /trunk/FACT++/src/EventBuilder.c	(revision 12458)
+++ /trunk/FACT++/src/EventBuilder.c	(revision 12459)
@@ -1219,9 +1219,10 @@
                   int jr, kr;
                   int  checkRoi;
-                  roi[0] = ntohs (rd[i].rBuf->S[head_len / 2 + 2]);
+                  int roiHopper = head_len/2 + 2; //points to the very first roi
+                  roi[0] = ntohs (rd[i].rBuf->S[roiHopper]);
+                  roiHopper += roi[0]+4;//skip to the second roi (i.e. next board, same patch-pixel)
                   for (kr = 1; kr < 4; kr++)
                   {
-                      checkRoi = ntohs(rd[i].rBuf->S[head_len/ 2 + 2
-                                                     		        + kr*(roi[0]+4)]);
+                      checkRoi = ntohs(rd[i].rBuf->S[roiHopper]);
                       if (checkRoi != roi[0])
                       {
@@ -1230,18 +1231,17 @@
                           goto EndBuf;
                       }
-
-                  }
+                      roiHopper += checkRoi+4;
+                  }
+                  //roiHopper now points to the first pixel of board 2. Do the 8 remaining pixels
                   for (jr = 1; jr < 9; jr++) {
-                     roi[jr] =
-                        ntohs (rd[i].
-                               rBuf->S[head_len / 2 + 2 + 9 * jr * (roi[jr-1] + 4)]);
+                     roi[jr] = ntohs(rd[i].rBuf->S[roiHopper]);
+                     checkRoi = roi[jr];
                      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
-                                                        + 9*jr*(roi[jr-1]+4)]); //shift up to the correct pixel
+                         roiHopper += checkRoi+4;
+                         checkRoi = ntohs(rd[i].rBuf->S[roiHopper]);
                          if (checkRoi != roi[jr])
                          {
-                             snprintf (str, MXSTR, "Inconsistent Roi accross board patches");
+                             snprintf (str, MXSTR, "Inconsistent Roi accross board patches B=%d P=%d %d %d", kr, jr, roi[jr], checkRoi);
                              factOut (kFatal, 1, str);
                              goto EndBuf;
