Index: /trunk/Ohana/src/addstar/src/ReadImageHeader.c
===================================================================
--- /trunk/Ohana/src/addstar/src/ReadImageHeader.c	(revision 26369)
+++ /trunk/Ohana/src/addstar/src/ReadImageHeader.c	(revision 26370)
@@ -5,7 +5,7 @@
 int ReadImageHeader (Header *header, Image *image, int photcode) {
 
-  int Nastro, ccdnum, hour, min, Nx, Ny, haveNx, haveNy, sourceID;
+  int Nastro, hour, min, Nx, Ny, haveNx, haveNy, sourceID;
   double tmp, sec, Cerror, ZeroPt, FWHM_X, FWHM_Y;
-  char *c, photname[64], line[80];
+  char *c, photname[64], line[80], ccdnum[64];
   PhotCode *photcodeData = NULL;
 
@@ -174,8 +174,19 @@
   } 
 
-  if (!gfits_scan (header, CCDNumKeyword, "%d", 1, &ccdnum)) {
-    image[0].ccdnum = 0xff;
-  } else {
-    image[0].ccdnum = ccdnum;
+  if (!gfits_scan (header, CCDNumKeyword, "%s", 1, ccdnum)) {
+    fprintf (stderr, "CCDNumKeyword %s not found\n", CCDNumKeyword);
+    return FALSE;
+  } else {
+    // CCDNumKeyword (EXTNAME) is a string yet we need an integer
+    // RULE: ccdnum is the value of the first string of digits in CCDNumKeyword
+    // For example: ccdnum(XY42.hdr) = 42, ccdnum(XY01.hdr) = 1
+    char *p = ccdnum;
+    // get rid of any leading non-digit characters
+    while (*p && !isdigit(*p)) p++;
+    if (*p == 0) {
+      fprintf (stderr, "invalid ccdnum %s\n", ccdnum);
+      return FALSE;
+    }
+    image[0].ccdnum = atoi(p);
   }
 
