Index: branches/eam_branches/ipp-20110505/Ohana/src/relphot/src/load_images.c
===================================================================
--- branches/eam_branches/ipp-20110505/Ohana/src/relphot/src/load_images.c	(revision 31552)
+++ branches/eam_branches/ipp-20110505/Ohana/src/relphot/src/load_images.c	(revision 31553)
@@ -25,13 +25,4 @@
   SkyTableSetFilenames (sky, CATDIR, "cpt");
   
-  // determine the populated SkyRegions overlapping the requested area
-  if (RegionSelect) {
-    skylist = SkyListByPatch (sky, -1, region);
-  } else {
-    Nchar = strlen(regionName);
-    if (!strcmp (&regionName[Nchar-4], ".cpt")) regionName[Nchar-4] = 0;
-    skylist = SkyListByName (sky, regionName);
-  }
-
   // convert database table to internal structure (binary to Image)
   // 'image' points to the same memory as db->ftable->buffer
@@ -43,8 +34,55 @@
   MARKTIME("read image table: %f sec\n", dtime);
 
-  // select the images which overlap the selected sky regions
-  // 'subset' points to a new copy of the data (different from 'image')
-  subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
-  MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+  // determine the populated SkyRegions overlapping the requested area
+  if (RegionSelect) {
+    if (region[0].Rmin > region[0].Rmax) {
+      SkyRegion subregion;
+      subregion = *region;
+      subregion.Rmin = 0.0; subregion.Rmax = region[0].Rmax;
+      skylist = SkyListByPatch (sky, -1, &subregion);
+
+      subregion.Rmin = region[0].Rmin; subregion.Rmax = 360.0; 
+      SkyList *extraList = SkyListByPatch (sky, -1, &subregion);
+
+      // select the images which overlap the selected sky regions
+      // 'subset' points to a new copy of the data (different from 'image')
+      subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
+      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+
+      Image *subsetExtra;
+      off_t NsubsetExtra;
+      off_t *LineNumberExtra, i;
+
+      subsetExtra = select_images (extraList, image, Nimage, &LineNumberExtra, &NsubsetExtra);
+      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+
+      REALLOCATE (subset, Image, MAX (Nsubset + NsubsetExtra, 1));
+      REALLOCATE (LineNumber, off_t, MAX (Nsubset + NsubsetExtra, 1));
+      
+      for (i = 0; i < NsubsetExtra; i++) {
+	subset[i+Nsubset] = subsetExtra[i];
+	LineNumber[i+Nsubset] = LineNumberExtra[i];
+      }
+      Nsubset += NsubsetExtra;
+      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+    } else {
+      skylist = SkyListByPatch (sky, -1, region);
+
+      // select the images which overlap the selected sky regions
+      // 'subset' points to a new copy of the data (different from 'image')
+      subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
+      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+    }
+  } else {
+    Nchar = strlen(regionName);
+    if (!strcmp (&regionName[Nchar-4], ".cpt")) regionName[Nchar-4] = 0;
+    skylist = SkyListByName (sky, regionName);
+
+    // select the images which overlap the selected sky regions
+    // 'subset' points to a new copy of the data (different from 'image')
+    subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
+    MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
+  }
+
 
   // generate db->vtable from db->ftable based on the selection
