Index: trunk/Ohana/src/opihi/dvo/paverage.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/paverage.c	(revision 19823)
+++ trunk/Ohana/src/opihi/dvo/paverage.c	(revision 20535)
@@ -6,9 +6,10 @@
   FILE *f;
   int i, j, kapa, Narg, Npts, NPTS, status, VERBOSE;
-  int Nsecfilt, Nsec;
+  int Nsecfilt, Nsec, Nloaded;
   double Mz, Mr, mag;
   double Radius, Rmin, Rmax, R, D;
   unsigned IDclip, IDchoice, LimExclude;
   float *Xvec, *Yvec, *Zvec;
+  void *Signal;
 
   PhotCode *photcode;
@@ -99,5 +100,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_SECF;
@@ -115,5 +121,5 @@
 
     /* project stars to screen display coords */
-    for (i = 0; i < catalog.Naverage; i++) {
+    for (i = 0; (i < catalog.Naverage) && !interrupt; i++) {
       if (IDclip && (average[i].code != IDchoice)) continue;
       average[i].R = ohana_normalize_angle (average[i].R);
@@ -128,8 +134,5 @@
       D = average[i].D;
       status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
-      if (!status) {
-	  fprintf (stderr, ".");
-	  continue;
-      }
+      if (!status) continue;
       Npts ++;
 
@@ -140,9 +143,11 @@
 	  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);
   }
