Index: trunk/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 19823)
+++ trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 20535)
@@ -7,5 +7,5 @@
   
   FILE *f;
-  int i, j, k, m, kapa, Narg, Npts, NPTS, status, VERBOSE, TimeSelect;
+  int i, j, k, m, kapa, Narg, Npts, NPTS, status, VERBOSE, TimeSelect, Nloaded;
   double Mz, Mr, mag;
   double Radius, Rmin, Rmax, R, D, trange;
@@ -16,4 +16,5 @@
   float *Xvec, *Yvec, *Zvec;
   time_t tzero, tend;
+  void *Signal;
 
   SkyTable *sky;
@@ -172,5 +173,10 @@
   ALLOCATE (Zvec, float, NPTS);
 
-  for (j = 0; j < skylist[0].Nregions; j++) {
+  // prepare to handle interrupt signals
+  Signal = signal (SIGINT, handle_interrupt);
+  interrupt = FALSE;
+
+  Nloaded = 0;
+  for (j = 0; (j < skylist[0].Nregions) && !interrupt; j++) {
     catalog.filename = skylist[0].filename[j];
     catalog.catflags = LOAD_AVES | LOAD_MEAS;
@@ -185,5 +191,5 @@
 
     /* project stars to screen display coords */
-    for (i = 0; i < catalog.Naverage; i++) {
+    for (i = 0; (i < catalog.Naverage) && !interrupt; i++) {
       if (IDclip && (catalog.average[i].code != IDchoice)) continue;
       catalog.average[i].R = ohana_normalize_angle (catalog.average[i].R);
@@ -213,8 +219,5 @@
 	}
 	status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
-	if (!status) {
-	  fprintf (stderr, ".");
-	  continue;
-	}
+	if (!status) continue;
 	Npts ++;
 
@@ -225,10 +228,12 @@
 	    REALLOCATE (Zvec, float, NPTS);
 	}
-	if (Npts > NCHUNK) {
+	if ((Npts > NCHUNK) || (Nloaded >= 25)) {
 	    PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode);
 	    Npts = 0;
+	    Nloaded = 0;
 	}
       }
     }
+    Nloaded ++;
     dvo_catalog_free (&catalog);
   }
