Index: /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateStatistics.c
===================================================================
--- /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateStatistics.c	(revision 35523)
+++ /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateStatistics.c	(revision 35524)
@@ -42,6 +42,10 @@
 	const char *chipName = psMetadataLookupStr(NULL, chip->concepts, "CHIP.NAME");
 
-	psMetadata *chipStats = psMetadataAlloc ();
-	psMetadataAdd (fpaStats, PS_LIST_TAIL, chipName, PS_DATA_METADATA, "chip stats folder", chipStats);
+	psMetadata *chipStats = psMetadataLookupPtr (&status, fpaStats, chipName);
+	if (!chipStats) {
+	  chipStats = psMetadataAlloc ();
+	  psMetadataAdd (fpaStats, PS_LIST_TAIL, chipName, PS_DATA_METADATA, "chip stats folder", chipStats);
+	  psFree (chipStats);
+	}
 
         pmCell *cell;
@@ -53,6 +57,10 @@
 	    const char *cellName = psMetadataLookupStr(NULL, cell->concepts, "CELL.NAME");
 
-	    psMetadata *cellStats = psMetadataAlloc ();
-	    psMetadataAdd (chipStats, PS_LIST_TAIL, cellName, PS_DATA_METADATA, "cell stats folder", cellStats);
+	    psMetadata *cellStats = psMetadataLookupPtr (&status, chipStats, cellName);
+	    if (!cellStats) {
+	      cellStats = psMetadataAlloc ();
+	      psMetadataAdd (chipStats, PS_LIST_TAIL, cellName, PS_DATA_METADATA, "cell stats folder", cellStats);
+	      psFree (cellStats);
+	    }
 
             // process each of the readouts
@@ -68,6 +76,10 @@
 		psStringAppend (&readoutName, "READOUT.%02d", view->readout);
 
-		psMetadata *readoutStats = psMetadataAlloc ();
-		psMetadataAdd (cellStats, PS_LIST_TAIL, readoutName, PS_DATA_METADATA, "readout stats folder", readoutStats);
+		psMetadata *readoutStats = psMetadataLookupPtr (&status, cellStats, readoutName);
+		if (!readoutStats) {
+		  readoutStats = psMetadataAlloc ();
+		  psMetadataAdd (cellStats, PS_LIST_TAIL, readoutName, PS_DATA_METADATA, "readout stats folder", readoutStats);
+		  psFree (readoutStats);
+		}
 
 		if (!pswarpPixelsLit(readout, readoutStats, config)) {
@@ -118,5 +130,4 @@
 		  psFree(headerName);
 		}
-		psFree (readoutStats);
 		psFree (readoutName);
 	    }
@@ -133,7 +144,5 @@
 	    trimsec->x0 = trimsec->x1 = trimsec->y0 = trimsec->y1 = 0; ///< All pixels
 
-	    psFree (cellStats);
 	}
-	psFree (chipStats);
     }
 
