Index: branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h
===================================================================
--- branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37571)
+++ branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37572)
@@ -172,4 +172,5 @@
 int AstromOffsetTableMatchChips (Image *images, off_t Nimages, AstromOffsetTable *table);
 AstromOffsetTable *AstromOffsetTableInit();
+void AstromOffsetTableFree(AstromOffsetTable *table);
 
 # endif
Index: branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c
===================================================================
--- branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 37571)
+++ branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapUtils.c	(revision 37572)
@@ -69,4 +69,22 @@
 }
 
+void AstromOffsetTableFree (AstromOffsetTable *table) {
+
+  if (!table) return;
+
+  int i, j;
+  for (i = 0; i < table->Nmap; i++) {
+    for (j = 0; j < table->map[i][0].Nx; j++) {
+      free (table->map[i][0].dXv);
+      free (table->map[i][0].dYv);
+    }
+    free (table->map[i]);
+    free (table->map[i][0].dXv[j]);
+    free (table->map[i][0].dYv[j]);
+  }
+  free (table->IDtoSeq);
+  free (table->map);
+}
+
 int AstromOffsetTableNewMap (AstromOffsetTable *table, int order, Image *image) {
 
Index: branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/LoadImages.c
===================================================================
--- branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/LoadImages.c	(revision 37571)
+++ branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/LoadImages.c	(revision 37572)
@@ -9,4 +9,5 @@
 static Image *imageCache = NULL;
 static off_t cacheNimage = 0;
+AstromOffsetTable *table = NULL;
 
 static time_t getLastModified(char *filename);
@@ -39,5 +40,4 @@
     lastModified = 0;
   }
-
 
   gfits_db_init (&db);
@@ -77,4 +77,19 @@
   }
 
+  // assign image->parent and image->coords.mosaic 
+  BuildChipMatch (image, *Nimage);
+  // MARKTIME("build chip match: %f sec\n", dtime);
+
+  char mapfile[DVO_MAX_PATH];
+  snprintf (mapfile, DVO_MAX_PATH, "%s/AstroMap.fits", catdir);
+
+  if (table) AstromOffsetTableFree(table);
+  table = AstromOffsetMapLoad (mapfile, FALSE);
+
+  // assign images.coords.offsetMap -> table->map[i]
+  if (table) {
+    AstromOffsetTableMatchChips (image, *Nimage, table);
+  }
+
   return (image);
 }
@@ -92,4 +107,5 @@
   if (!dvoUseImageCache && (images != NULL)) {
     free(images);
+    AstromOffsetTableFree (table);
   } else {
     // defer free until next LoadImages with a different or modified Images.dat
