Index: trunk/Ohana/src/relastro/include/relastro.h
===================================================================
--- trunk/Ohana/src/relastro/include/relastro.h	(revision 30616)
+++ trunk/Ohana/src/relastro/include/relastro.h	(revision 31160)
@@ -89,4 +89,5 @@
 char   GSCFILE[256];
 char   CATDIR[256];
+char   *HIGH_SPEED_DIR;
 char   CATMODE[16];    /* raw, mef, split, mysql */
 char   CATFORMAT[16];  /* internal, elixir, loneos, panstarrs */
@@ -95,5 +96,5 @@
 
 double SIGMA_LIM;
-int    SRC_MEAS_TOOFEW; //catalog objects wich fewer detections then this are ignored
+int SRC_MEAS_TOOFEW; //catalog objects wich fewer detections then this are ignored
 double MIN_ERROR;
 
Index: trunk/Ohana/src/relastro/src/UpdateObjects.c
===================================================================
--- trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 30616)
+++ trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 31160)
@@ -92,4 +92,8 @@
       }
 # endif
+
+      if (catalog[i].average[j].Nmeasure == 0) {
+	  continue;
+      }
 
       N = 0;
Index: trunk/Ohana/src/relastro/src/args.c
===================================================================
--- trunk/Ohana/src/relastro/src/args.c	(revision 30616)
+++ trunk/Ohana/src/relastro/src/args.c	(revision 31160)
@@ -39,4 +39,6 @@
     remove_argument (N, &argc, argv);
     RADIUS = atof(argv[N]);
+    remove_argument (N, &argc, argv);
+    HIGH_SPEED_DIR = strcreate(argv[N]);
     remove_argument (N, &argc, argv);
   }
Index: trunk/Ohana/src/relastro/src/high_speed_objects.c
===================================================================
--- trunk/Ohana/src/relastro/src/high_speed_objects.c	(revision 30616)
+++ trunk/Ohana/src/relastro/src/high_speed_objects.c	(revision 31160)
@@ -22,7 +22,7 @@
   int zcode, zNsec, ycode, yNsec, jcode, jNsec, hcode, hNsec, kcode, kNsec, USNO_R, USNO_N, Nsecfilt;
   char filename[1024];
-  char outdir[]="/data/ipp022.0/ndeacon/hispeedzy";
   Noff = strlen(CATDIR);
-  sprintf (filename, "%s/%s", outdir, &catalog[0].filename[Noff]);
+  sprintf (filename, "%s/%s", HIGH_SPEED_DIR, &catalog[0].filename[Noff]);
+  printf("%s\n",filename);
   dvo_catalog_init(&catalog1, TRUE); /*initialise new catalogue*/
   catalog1.filename = strcreate(filename);
@@ -121,8 +121,4 @@
     foundA = FALSE;
     for (j = 0; !foundA && (j < catalog[0].average[i].Nmeasure); j++, m++) {
-      if((catalog[0].average[i].R>204.1923)&&(catalog[0].average[i].R<204.1924)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377))
-	{
-	  printf("Hello");
-	}
 
       if (MeasMatchesPhotcode(&catalog[0].measure[m], photcodesGroupA, NphotcodesGroupA)) {
@@ -135,9 +131,5 @@
     foundB = FALSE;
     for (j = 0; !foundB && (j < catalog[0].average[i].Nmeasure); j++, m++) {
-                                                   
-      if((catalog[0].average[i].R>204.192)&&(catalog[0].average[i].R<204.1925)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377))
-        {
-          printf("Hello");
-        }
+          
 
       if (MeasMatchesPhotcode(&catalog[0].measure[m], photcodesGroupB, NphotcodesGroupB)) {
@@ -158,9 +150,5 @@
     if (foundA && !foundB) {
       // average-based tests:
-                                                   
-      if((catalog[0].average[i].R>204.1923)&&(catalog[0].average[i].R<204.1924)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377))
-	{
-          printf("Hello");
-        }
+         
 
       valid = TRUE;
@@ -204,8 +192,4 @@
 
       // average-based tests:
-      if((catalog[0].average[i].R>204.192)&&(catalog[0].average[i].R<204.193)&&(catalog[0].average[i].D>11.372)&&(catalog[0].average[i].D<11.373))
-	{
-	  printf("Hello");
-	}
       valid = TRUE;
       valid &= ((catalog[0].average[i].flags & 0x01000000) == 0);
@@ -214,6 +198,6 @@
 
       valid &= ((catalog[0].secfilt[i*Nsecfilt + jNsec].M < 1.0)||(isnan(catalog[0].secfilt[i*Nsecfilt + jNsec].M)));
-      valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].Nused > 1);
-      valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].dM < 0.2);
+      valid &= ((catalog[0].secfilt[i*Nsecfilt + yNsec].Nused > 1)||(catalog[0].secfilt[i*Nsecfilt + zNsec].Nused > 1));
+      valid &= ((catalog[0].secfilt[i*Nsecfilt + yNsec].dM < 0.2)||(catalog[0].secfilt[i*Nsecfilt + zNsec].dM < 0.2));
 
       /*if ((catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0) || (catalog[0].secfilt[i*Nsecfilt + zNsec].Nused == 1)) {
Index: trunk/Ohana/src/relastro/src/select_images.c
===================================================================
--- trunk/Ohana/src/relastro/src/select_images.c	(revision 30616)
+++ trunk/Ohana/src/relastro/src/select_images.c	(revision 31160)
@@ -144,6 +144,7 @@
     }
     
+    // this adds 1.3 sec for 3M images
     if (!FindMosaicForImage (timage, Ntimage, i)) {
-      fprintf (stderr, "cannot find mosaic for "OFF_T_FMT"\n",  i);
+      fprintf (stderr, "cannot find mosaic for "OFF_T_FMT"\n", i);
       continue;
     }
@@ -165,10 +166,9 @@
     found = FALSE;
 
-    /* transform corners to ra,dec */
+    /* transform corners to ra,dec -- costs ~3sec for 3M images (pikake) */
     double RminImage = 360.0;
     double RmaxImage =   0.0;
     double DminImage = +90.0;
     double DmaxImage = -90.0;
-    // int leftside = FALSE;
     for (j = 0; j < 5; j++) {
       XY_to_RD (&Ri[j], &Di[j], Xi[j], Yi[j], &timage[i].coords);
@@ -197,5 +197,5 @@
     if (USE_BASIC_CHECK) goto found_it;
 
-    // RA(nStart) is guaranteed to be < RminImage:
+    // RA(nStart) is guaranteed to be < RminImage: -- costs 0.5sec for 3M images
     nStart = getRegionStartByRA (RminImage, RmaxSky, skylist[0].Nregions);
 
@@ -258,6 +258,6 @@
   }
   MARKTIME("finish image selection: %f sec\n", dtime);
-    
-  if (VERBOSE) fprintf (stderr, "found "OFF_T_FMT" images\n",  nimage);
+
+  if (VERBOSE) fprintf (stderr, "found "OFF_T_FMT" images\n", nimage);
 
   REALLOCATE (image, Image, MAX (nimage, 1));
