Index: trunk/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 41705)
+++ trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 42293)
@@ -53,12 +53,13 @@
 
 // make this a bit more clever and dynamic
-static psImageMaskType maskSuspect  = 0;
-static psImageMaskType maskSpike    = 0;
-static psImageMaskType maskStarCore = 0;
-static psImageMaskType maskBurntool = 0;
-static psImageMaskType maskConvPoor = 0;
-static psImageMaskType maskGhost    = 0;
-static psImageMaskType maskGlint    = 0;
-static psImageMaskType maskCrosstalk    = 0;
+static psImageMaskType maskSuspect   = 0;
+static psImageMaskType maskSpike     = 0;
+static psImageMaskType maskStarCore  = 0;
+static psImageMaskType maskBurntool  = 0;
+static psImageMaskType maskConvPoor  = 0;
+static psImageMaskType maskGhost     = 0;
+static psImageMaskType maskGlint     = 0;
+static psImageMaskType maskCrosstalk = 0;
+static psImageMaskType maskCTE       = 0;
 
 bool pmSourceMagnitudesInit (pmConfig *config, psMetadata *recipe)
@@ -69,12 +70,13 @@
     // we are going to test specially against these poor values
     if (config) {
-	maskSpike    = pmConfigMaskGet("SPIKE", config);
-	maskStarCore = pmConfigMaskGet("STARCORE", config);
-	maskBurntool = pmConfigMaskGet("BURNTOOL", config);
-	maskConvPoor = pmConfigMaskGet("CONV.POOR", config);
-	maskGhost    = pmConfigMaskGet("GHOST", config);
-	maskGlint    = pmConfigMaskGet("GHOST", config);
-	maskCrosstalk    = pmConfigMaskGet("CROSSTALK", config);
-	maskSuspect  = maskSpike | maskStarCore | maskBurntool | maskConvPoor;
+	maskSpike     = pmConfigMaskGet("SPIKE", config);
+	maskStarCore  = pmConfigMaskGet("STARCORE", config);
+	maskBurntool  = pmConfigMaskGet("BURNTOOL", config);
+	maskConvPoor  = pmConfigMaskGet("CONV.POOR", config);
+	maskGhost     = pmConfigMaskGet("GHOST", config);
+	maskGlint     = pmConfigMaskGet("GHOST", config);
+	maskCrosstalk = pmConfigMaskGet("CROSSTALK", config);
+	maskCTE       = pmConfigMaskGet("CTE", config);
+	maskSuspect   = maskSpike | maskStarCore | maskBurntool | maskConvPoor;
     }
 
@@ -440,4 +442,5 @@
     float convpoorSum = 0;
     float ghostSum = 0;
+    float cteSum = 0;
 
     int Xo, Yo, dP;
@@ -534,4 +537,9 @@
 		convpoorSum += value;
 	    }
+	    // count pixels which are masked with an mask bit (bad or poor)
+            if (mask->data.PS_TYPE_IMAGE_MASK_DATA[my][mx] & maskCTE) {
+		cteSum += value;
+	    }
+
         }
     }
@@ -555,4 +563,7 @@
     if ((convpoorSum/modelSum) > 0.25) {
 	source->mode2 |= PM_SOURCE_MODE2_ON_CONVPOOR;
+    }
+    if ((cteSum/modelSum) > 0.25) {
+	source->mode2 |= PM_SOURCE_MODE2_ON_CTE;
     }
 
@@ -614,4 +625,5 @@
     float convpoorSum = 0;
     float ghostSum = 0;
+    float cteSum = 0;
 
     int Xo, Yo, dP;
@@ -683,4 +695,8 @@
 		convpoorSum += 1.;
 	    }
+	    // count pixels which are masked with an mask bit (bad or poor)
+            if (mask->data.PS_TYPE_IMAGE_MASK_DATA[my][mx] & maskCTE) {
+                cteSum += 1.;
+            }
         }
     }
@@ -701,4 +717,7 @@
     if ((convpoorSum/modelSum) > 0.25) {
 	source->mode2 |= PM_SOURCE_MODE2_ON_CONVPOOR;
+    }
+    if ((cteSum/modelSum) > 0.25) {
+	source->mode2 |= PM_SOURCE_MODE2_ON_CTE;
     }
 
