Index: trunk/Ohana/src/imregister/src/imphotmerge.c
===================================================================
--- trunk/Ohana/src/imregister/src/imphotmerge.c	(revision 27529)
+++ trunk/Ohana/src/imregister/src/imphotmerge.c	(revision 27530)
@@ -152,5 +152,5 @@
   /* check that file size makes sense */
   Nimage = 0;
-  gfits_scan (header, "NIMAGES", "%lld", 1, &(long long *) Nimage);
+  gfits_scan (header, "NIMAGES", "%lld", 1, (long long *) &Nimage);
   if (fstat (fileno(f), &filestatus) == -1) {
     fprintf (stderr, "ERROR: failed to get status of image catalog\n");
Index: trunk/Ohana/src/kapa2/include/prototypes.h
===================================================================
--- trunk/Ohana/src/kapa2/include/prototypes.h	(revision 27529)
+++ trunk/Ohana/src/kapa2/include/prototypes.h	(revision 27530)
@@ -36,4 +36,5 @@
 int           DrawObjectN         PROTO((KapaGraphWidget *graph, Gobjects *objects));
 void          DrawPoints          PROTO((KapaGraphWidget *graph, Gobjects *objects));
+void          ClipLine            PROTO((double x0, double y0, double x1, double y1, double X0, double Y0, double X1, double Y1));
 void          DrawXErrors         PROTO((KapaGraphWidget *graph, Gobjects *objects));
 void          DrawYErrors         PROTO((KapaGraphWidget *graph, Gobjects *objects));
Index: trunk/Ohana/src/kapa2/src/DrawObjects.c
===================================================================
--- trunk/Ohana/src/kapa2/src/DrawObjects.c	(revision 27529)
+++ trunk/Ohana/src/kapa2/src/DrawObjects.c	(revision 27530)
@@ -1,3 +1,4 @@
 # include "Ximage.h"
+
 # define DrawLine(X1,Y1,X2,Y2) (XDrawLine (graphic->display, graphic->window, graphic->gc, (int)(X1+0.5), (int)(Y1+0.5), (int)(X2+0.5), (int)(Y2+0.5)))
 # define DrawRectangle(X1,Y1,X2,Y2) (XDrawRectangle (graphic->display, graphic->window, graphic->gc, (int)(X1+0.5), (int)(Y1+0.5), (int)(X2+0.5), (int)(Y2+0.5)))
@@ -10,6 +11,4 @@
 
 static Graphic *graphic;
-
-void ClipLine (double x0, double y0, double x1, double y1, double X0, double Y0, double X1, double Y1);
 
 /* draw all objects for this Graph */
@@ -40,18 +39,18 @@
   /* set line type */
   switch (object[0].ltype) {
-  case 0:
-    XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CapNotLast, JoinMiter);
-    break;
-  case 1:
-    XSetDashes (graphic->display, graphic->gc, 100, dash, 2);
-    XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CapNotLast, JoinMiter);
-    break;
-  case 2:
-    XSetDashes (graphic->display, graphic->gc, 10, dot, 2);
-    XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CapNotLast, JoinMiter);
-    break;
-  default:
-    XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CapNotLast, JoinMiter);
-    break;
+    case 0:
+      XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CapNotLast, JoinMiter);
+      break;
+    case 1:
+      XSetDashes (graphic->display, graphic->gc, 100, dash, 2);
+      XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CapNotLast, JoinMiter);
+      break;
+    case 2:
+      XSetDashes (graphic->display, graphic->gc, 10, dot, 2);
+      XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CapNotLast, JoinMiter);
+      break;
+    default:
+      XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CapNotLast, JoinMiter);
+      break;
   }
 
@@ -59,13 +58,13 @@
 
   switch (object[0].style) {
-  case CONNECT: 
-    DrawConnect (graph, object);
-    break;
-  case HISTOGRAM:
-    DrawHistogram (graph, object);
-    break;
-  case POINTS:
-    DrawPoints (graph, object);
-    break;
+    case CONNECT: 
+      DrawConnect (graph, object);
+      break;
+    case HISTOGRAM:
+      DrawHistogram (graph, object);
+      break;
+    case POINTS:
+      DrawPoints (graph, object);
+      break;
   }
     
@@ -383,7 +382,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]);
-	  }
+	{
+	  FillRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]);
+	}
       }
     }
@@ -395,7 +394,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]);
-	  }
+	{
+	  DrawRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]);
+	}
       }
     }
@@ -407,8 +406,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d*z[i], sy, sx + d*z[i] + 1, sy);
-	    DrawLine (sx, sy - d*z[i], sx, sy + d*z[i] + 1);
-	  }
+	{
+	  DrawLine (sx - d*z[i], sy, sx + d*z[i] + 1, sy);
+	  DrawLine (sx, sy - d*z[i], sx, sy + d*z[i] + 1);
+	}
       }
     }
@@ -420,8 +419,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx + d*z[i] + 1, sy - d*z[i] - 1, sx - d*z[i], sy + d*z[i]);
-	    DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i] + 1, sy + d*z[i] + 1);
-	  }
+	{
+	  DrawLine (sx + d*z[i] + 1, sy - d*z[i] - 1, sx - d*z[i], sy + d*z[i]);
+	  DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i] + 1, sy + d*z[i] + 1);
+	}
       }
     }
@@ -434,11 +433,11 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    points[0].x = sx - d*z[i];  points[0].y = sy + 0.58*d*z[i];  
-	    points[1].x = sx + d*z[i];  points[1].y = sy + 0.58*d*z[i];  
-	    points[2].x = sx;           points[2].y = sy - 1.15*d*z[i];  
-	    points[3].x = sx - d*z[i];  points[3].y = sy + 0.58*d*z[i];  
-	    XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin);
-	  }
+	{
+	  points[0].x = sx - d*z[i];  points[0].y = sy + 0.58*d*z[i];  
+	  points[1].x = sx + d*z[i];  points[1].y = sy + 0.58*d*z[i];  
+	  points[2].x = sx;           points[2].y = sy - 1.15*d*z[i];  
+	  points[3].x = sx - d*z[i];  points[3].y = sy + 0.58*d*z[i];  
+	  XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin);
+	}
       }
     }
@@ -450,9 +449,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d*z[i], sy + 0.58*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]);
-	    DrawLine (sx + d*z[i], sy + 0.58*d*z[i], sx,          sy - 1.15*d*z[i]);
-	    DrawLine (sx,          sy - 1.15*d*z[i], sx - d*z[i], sy + 0.58*d*z[i]);
-	  }
+	{
+	  DrawLine (sx - d*z[i], sy + 0.58*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]);
+	  DrawLine (sx + d*z[i], sy + 0.58*d*z[i], sx,          sy - 1.15*d*z[i]);
+	  DrawLine (sx,          sy - 1.15*d*z[i], sx - d*z[i], sy + 0.58*d*z[i]);
+	}
       }
     }
@@ -464,9 +463,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]);
-	    DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]);
-	    DrawLine (sx, sy, sx,          sy - 1.15*d*z[i]);
-	  }
+	{
+	  DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]);
+	  DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]);
+	  DrawLine (sx, sy, sx,          sy - 1.15*d*z[i]);
+	}
       }
     }
@@ -478,7 +477,41 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawCircle (sx, sy, d*z[i]);
-	  }
+	{
+	  DrawCircle (sx, sy, d*z[i]);
+	}
+      }
+    }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d*z[i], sy - 1.00*d*z[i], sx + 0.95*d*z[i], sy - 0.31*d*z[i]);
+	  DrawLine (sx + 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.58*d*z[i], sy + 0.81*d*z[i]);
+	  DrawLine (sx + 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.58*d*z[i], sy + 0.81*d*z[i]);
+	  DrawLine (sx - 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.95*d*z[i], sy - 0.31*d*z[i]);
+	  DrawLine (sx - 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.00*d*z[i], sy - 1.00*d*z[i]);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* hexagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx -      d*z[i], sy,               sx - 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx +      d*z[i], sy);
+
+	  DrawLine (sx +      d*z[i], sy,               sx + 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx -      d*z[i], sy);
+	}
       }
     }
@@ -506,7 +539,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillRectangle (sx - d, sy - d, 2*d, 2*d);
-	  }
+	{
+	  FillRectangle (sx - d, sy - d, 2*d, 2*d);
+	}
       }
     }
@@ -518,7 +551,7 @@
    	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawRectangle (sx - d, sy - d, 2*d, 2*d);
-	  }
+	{
+	  DrawRectangle (sx - d, sy - d, 2*d, 2*d);
+	}
       }
     }
@@ -530,8 +563,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d, sy, sx + d + 1, sy);
-	    DrawLine (sx, sy - d, sx, sy + d + 1);
-	  }
+	{
+	  DrawLine (sx - d, sy, sx + d + 1, sy);
+	  DrawLine (sx, sy - d, sx, sy + d + 1);
+	}
       }
     }
@@ -543,9 +576,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    /* XDrawLine is a little funny, this is needed to fix endpost errors */
-	    DrawLine (sx + d + 1, sy - d - 1, sx - d, sy + d);
-	    DrawLine (sx - d, sy - d, sx + d + 1, sy + d + 1);
-	  }
+	{
+	  /* XDrawLine is a little funny, this is needed to fix endpost errors */
+	  DrawLine (sx + d + 1, sy - d - 1, sx - d, sy + d);
+	  DrawLine (sx - d, sy - d, sx + d + 1, sy + d + 1);
+	}
       }
     }
@@ -558,11 +591,11 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    points[0].x = sx - d;  points[0].y = sy + 0.58*d;  
-	    points[1].x = sx + d;  points[1].y = sy + 0.58*d;  
-	    points[2].x = sx;      points[2].y = sy - 1.15*d;  
-	    points[3].x = sx - d;  points[3].y = sy + 0.58*d;  
-	    XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin);
-	  }
+	{
+	  points[0].x = sx - d;  points[0].y = sy + 0.58*d;  
+	  points[1].x = sx + d;  points[1].y = sy + 0.58*d;  
+	  points[2].x = sx;      points[2].y = sy - 1.15*d;  
+	  points[3].x = sx - d;  points[3].y = sy + 0.58*d;  
+	  XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin);
+	}
       }
     }
@@ -574,9 +607,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d);
-	    DrawLine (sx + d, sy + 0.58*d, sx,     sy - 1.15*d);
-	    DrawLine (sx,     sy - 1.15*d, sx - d, sy + 0.58*d);
-	  }
+	{
+	  DrawLine (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d);
+	  DrawLine (sx + d, sy + 0.58*d, sx,     sy - 1.15*d);
+	  DrawLine (sx,     sy - 1.15*d, sx - d, sy + 0.58*d);
+	}
       }
     }
@@ -588,9 +621,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx, sy, sx - d, sy + 0.58*d);
-	    DrawLine (sx, sy, sx + d, sy + 0.58*d);
-	    DrawLine (sx, sy, sx,     sy - 1.15*d);
-	  }
+	{
+	  DrawLine (sx, sy, sx - d, sy + 0.58*d);
+	  DrawLine (sx, sy, sx + d, sy + 0.58*d);
+	  DrawLine (sx, sy, sx,     sy - 1.15*d);
+	}
       }
     }
@@ -602,7 +635,40 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawCircle (sx, sy, d);
-	  }
+	{
+	  DrawCircle (sx, sy, d);
+	}
+      }
+    }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d, sy - 1.00*d, sx + 0.95*d, sy - 0.31*d);
+	  DrawLine (sx + 0.95*d, sy - 0.31*d, sx + 0.58*d, sy + 0.81*d);
+	  DrawLine (sx + 0.58*d, sy + 0.81*d, sx - 0.58*d, sy + 0.81*d);
+	  DrawLine (sx - 0.58*d, sy + 0.81*d, sx - 0.95*d, sy - 0.31*d);
+	  DrawLine (sx - 0.95*d, sy - 0.31*d, sx + 0.00*d, sy - 1.00*d);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d);
+	  DrawLine (sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d);
+	  DrawLine (sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d);
+	  DrawLine (sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d);
+	  DrawLine (sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d);
+	  DrawLine (sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d);
+	}
       }
     }
@@ -654,12 +720,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy))) 
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sy1 - sz;
-	  sx11 = sy1 + sz;
-	  DrawLine (sx1, sx10, sx1, sx11);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sy1 - sz;
+	sx11 = sy1 + sz;
+	DrawLine (sx1, sx10, sx1, sx11);
+      }
+    }
     if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue;
     sx0 = x[i]*mxi + y[i]*mxj + bx;
@@ -671,12 +737,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sy1 - sz;
-	  sx11 = sy1 + sz;
-	  DrawLine (sx1, sx10, sx1, sx11);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sy1 - sz;
+	sx11 = sy1 + sz;
+	DrawLine (sx1, sx10, sx1, sx11);
+      }
+    }
   }
 }
@@ -716,12 +782,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sx1 - sz;
-	  sx11 = sx1 + sz;
-	  DrawLine (sx10, sy1, sx11, sy1);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sx1 - sz;
+	sx11 = sx1 + sz;
+	DrawLine (sx10, sy1, sx11, sy1);
+      }
+    }
     if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue;
     sx0 = x[i]*mxi + y[i]*mxj + bx;
@@ -733,12 +799,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sx1 - sz;
-	  sx11 = sx1 + sz;
-	  DrawLine (sx10, sy1, sx11, sy1);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sx1 - sz;
+	sx11 = sx1 + sz;
+	DrawLine (sx10, sy1, sx11, sy1);
+      }
+    }
   }
 }
Index: trunk/Ohana/src/kapa2/src/Graphs.c
===================================================================
--- trunk/Ohana/src/kapa2/src/Graphs.c	(revision 27529)
+++ trunk/Ohana/src/kapa2/src/Graphs.c	(revision 27530)
@@ -36,4 +36,7 @@
   graph[0].data.lweight = 0.5;		// line weight of 0.5
   graph[0].data.size    = 1.0;		// point size of 1.0
+
+  graph[0].data.flipeast  = 1;		// +East  = -X by default
+  graph[0].data.flipnorth = 0;		// +North = +Y by default
 
   graph[0].Nobjects = 0;
Index: trunk/Ohana/src/kapa2/src/PSObjects.c
===================================================================
--- trunk/Ohana/src/kapa2/src/PSObjects.c	(revision 27529)
+++ trunk/Ohana/src/kapa2/src/PSObjects.c	(revision 27530)
@@ -342,4 +342,38 @@
       }
     }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d*z[i], sy + 1.00*d*z[i], sx + 0.95*d*z[i], sy + 0.31*d*z[i]);
+	  DrawLine (sx + 0.95*d*z[i], sy + 0.31*d*z[i], sx + 0.58*d*z[i], sy - 0.81*d*z[i]);
+	  DrawLine (sx + 0.58*d*z[i], sy - 0.81*d*z[i], sx - 0.58*d*z[i], sy - 0.81*d*z[i]);
+	  DrawLine (sx - 0.58*d*z[i], sy - 0.81*d*z[i], sx - 0.95*d*z[i], sy + 0.31*d*z[i]);
+	  DrawLine (sx - 0.95*d*z[i], sy + 0.31*d*z[i], sx + 0.00*d*z[i], sy + 1.00*d*z[i]);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* hexagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx -      d*z[i], sy,               sx - 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx +      d*z[i], sy);
+
+	  DrawLine (sx +      d*z[i], sy,               sx + 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx -      d*z[i], sy);
+	}
+      }
+    }
     if (object[0].ptype == 100) {	/* connect a pair of points */
       for (i = 0; i + 1 < object[0].Npts; i+=2) {
@@ -460,4 +494,37 @@
 	    DrawCircle (sx, sy, d);
 	  }
+      }
+    }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d, sy + 1.00*d, sx + 0.95*d, sy + 0.31*d);
+	  DrawLine (sx + 0.95*d, sy + 0.31*d, sx + 0.58*d, sy - 0.81*d);
+	  DrawLine (sx + 0.58*d, sy - 0.81*d, sx - 0.58*d, sy - 0.81*d);
+	  DrawLine (sx - 0.58*d, sy - 0.81*d, sx - 0.95*d, sy + 0.31*d);
+	  DrawLine (sx - 0.95*d, sy + 0.31*d, sx + 0.00*d, sy + 1.00*d);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d);
+	  DrawLine (sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d);
+	  DrawLine (sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d);
+	  DrawLine (sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d);
+	  DrawLine (sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d);
+	  DrawLine (sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d);
+	}
       }
     }
Index: trunk/Ohana/src/kapa2/src/bDrawObjects.c
===================================================================
--- trunk/Ohana/src/kapa2/src/bDrawObjects.c	(revision 27529)
+++ trunk/Ohana/src/kapa2/src/bDrawObjects.c	(revision 27530)
@@ -7,4 +7,5 @@
 # define FillTriangle(X1,Y1,X2,Y2,X3,Y3) (bDrawTriFill ((X1), (Y1), (X2), (Y2), (X3), (Y3)))
 # define OpenTriangle(X1,Y1,X2,Y2,X3,Y3) (bDrawTriOpen ((X1), (Y1), (X2), (Y2), (X3), (Y3)))
+
 # define CONNECT 0
 # define HISTOGRAM 1
@@ -32,13 +33,13 @@
 
     switch (graph[0].objects[i].style) {
-    case CONNECT: 
-      bDrawConnect (graph, &graph[0].objects[i]);
-      break;
-    case HISTOGRAM:
-      bDrawHistogram (graph, &graph[0].objects[i]);
-      break;
-    case POINTS:
-      bDrawPoints (graph, &graph[0].objects[i]);
-      break;
+      case CONNECT: 
+	bDrawConnect (graph, &graph[0].objects[i]);
+	break;
+      case HISTOGRAM:
+	bDrawHistogram (graph, &graph[0].objects[i]);
+	break;
+      case POINTS:
+	bDrawPoints (graph, &graph[0].objects[i]);
+	break;
     }
 
@@ -231,7 +232,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillRectangle (sx, sy, 2*d*z[i], 2*d*z[i]);
-	  }
+	{
+	  FillRectangle (sx, sy, 2*d*z[i], 2*d*z[i]);
+	}
       }
     }
@@ -243,7 +244,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawRectangle (sx, sy, 2*d*z[i], 2*d*z[i]);
-	  }
+	{
+	  DrawRectangle (sx, sy, 2*d*z[i], 2*d*z[i]);
+	}
       }
     }
@@ -255,8 +256,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d*z[i], sy, sx + d*z[i], sy);
-	    DrawLine (sx, sy - d*z[i], sx, sy + d*z[i]);
-	  }
+	{
+	  DrawLine (sx - d*z[i], sy, sx + d*z[i], sy);
+	  DrawLine (sx, sy - d*z[i], sx, sy + d*z[i]);
+	}
       }
     }
@@ -268,8 +269,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx + d*z[i], sy - d*z[i], sx - d*z[i], sy + d*z[i]);
-	    DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i], sy + d*z[i]);
-	  }
+	{
+	  DrawLine (sx + d*z[i], sy - d*z[i], sx - d*z[i], sy + d*z[i]);
+	  DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i], sy + d*z[i]);
+	}
       }
     }
@@ -281,7 +282,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillTriangle (sx - d*z[i], sy - 0.58*d*z[i], sx + d*z[i], sy - 0.58*d*z[i], sx, sy + 1.15*d*z[i]);
-	  }
+	{
+	  FillTriangle (sx - d*z[i], sy - 0.58*d*z[i], sx + d*z[i], sy - 0.58*d*z[i], sx, sy + 1.15*d*z[i]);
+	}
       }
     }
@@ -293,7 +294,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    OpenTriangle (sx - d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]);
-	  }
+	{
+	  OpenTriangle (sx - d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]);
+	}
       }
     }
@@ -305,9 +306,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]);
-	    DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]);
-	    DrawLine (sx, sy, sx,          sy - 1.15*d*z[i]);
-	  }
+	{
+	  DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]);
+	  DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]);
+	  DrawLine (sx, sy, sx,          sy - 1.15*d*z[i]);
+	}
       }
     }
@@ -319,7 +320,41 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawCircle (sx, sy, d*z[i]);
-	  }
+	{
+	  DrawCircle (sx, sy, d*z[i]);
+	}
+      }
+    }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d*z[i], sy - 1.00*d*z[i], sx + 0.95*d*z[i], sy - 0.31*d*z[i]);
+	  DrawLine (sx + 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.58*d*z[i], sy + 0.81*d*z[i]);
+	  DrawLine (sx + 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.58*d*z[i], sy + 0.81*d*z[i]);
+	  DrawLine (sx - 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.95*d*z[i], sy - 0.31*d*z[i]);
+	  DrawLine (sx - 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.00*d*z[i], sy - 1.00*d*z[i]);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* hexagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx -      d*z[i], sy,               sx - 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx +      d*z[i], sy);
+
+	  DrawLine (sx +      d*z[i], sy,               sx + 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]);
+	  DrawLine (sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx -      d*z[i], sy);
+	}
       }
     }
@@ -344,7 +379,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillRectangle (sx, sy, 2*d, 2*d);
-	  }
+	{
+	  FillRectangle (sx, sy, 2*d, 2*d);
+	}
       }
     }
@@ -354,9 +389,9 @@
 	sx = x[i]*mxi + y[i]*mxj + bx;
 	sy = x[i]*myi + y[i]*myj + by;
-   	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
-	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawRectangle (sx, sy, 2*d, 2*d);
-	  }
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawRectangle (sx, sy, 2*d, 2*d);
+	}
       }
     }
@@ -368,8 +403,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx - d, sy, sx + d, sy);
-	    DrawLine (sx, sy - d, sx, sy + d);
-	  }
+	{
+	  DrawLine (sx - d, sy, sx + d, sy);
+	  DrawLine (sx, sy - d, sx, sy + d);
+	}
       }
     }
@@ -381,8 +416,8 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx + d, sy - d, sx - d, sy + d);
-	    DrawLine (sx - d, sy - d, sx + d, sy + d);
-	  }
+	{
+	  DrawLine (sx + d, sy - d, sx - d, sy + d);
+	  DrawLine (sx - d, sy - d, sx + d, sy + d);
+	}
       }
     }
@@ -394,7 +429,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    FillTriangle (sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d);
-	  }
+	{
+	  FillTriangle (sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d);
+	}
       }
     }
@@ -406,7 +441,7 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    OpenTriangle (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d, sx, sy - 1.15*d);
-	  }
+	{
+	  OpenTriangle (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d, sx, sy - 1.15*d);
+	}
       }
     }
@@ -418,9 +453,9 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawLine (sx, sy, sx - d, sy - 0.58*d);
-	    DrawLine (sx, sy, sx + d, sy - 0.58*d);
-	    DrawLine (sx, sy, sx,     sy + 1.15*d);
-	  }
+	{
+	  DrawLine (sx, sy, sx - d, sy - 0.58*d);
+	  DrawLine (sx, sy, sx + d, sy - 0.58*d);
+	  DrawLine (sx, sy, sx,     sy + 1.15*d);
+	}
       }
     }
@@ -432,7 +467,40 @@
 	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
-	  {
-	    DrawCircle (sx, sy, d);
-	  }
+	{
+	  DrawCircle (sx, sy, d);
+	}
+      }
+    }
+    if (object[0].ptype == 8) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx + 0.00*d, sy - 1.00*d, sx + 0.95*d, sy - 0.31*d);
+	  DrawLine (sx + 0.95*d, sy - 0.31*d, sx + 0.58*d, sy + 0.81*d);
+	  DrawLine (sx + 0.58*d, sy + 0.81*d, sx - 0.58*d, sy + 0.81*d);
+	  DrawLine (sx - 0.58*d, sy + 0.81*d, sx - 0.95*d, sy - 0.31*d);
+	  DrawLine (sx - 0.95*d, sy - 0.31*d, sx + 0.00*d, sy - 1.00*d);
+	}
+      }
+    }
+    if (object[0].ptype == 9) {	/* pentagon */
+      for (i = 0; i < object[0].Npts; i++) {
+	if (!(finite(x[i]) && finite(y[i]))) continue;
+	sx = x[i]*mxi + y[i]*mxj + bx;
+	sy = x[i]*myi + y[i]*myj + by;
+	if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
+	    (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
+	{
+	  DrawLine (sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d);
+	  DrawLine (sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d);
+	  DrawLine (sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d);
+	  DrawLine (sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d);
+	  DrawLine (sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d);
+	  DrawLine (sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d);
+	}
       }
     }
@@ -484,12 +552,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sy1 - sz;
-	  sx11 = sy1 + sz;
-	  DrawLine (sx1, sx10, sx1, sx11);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sy1 - sz;
+	sx11 = sy1 + sz;
+	DrawLine (sx1, sx10, sx1, sx11);
+      }
+    }
     if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue;
     sx0 = x[i]*mxi + y[i]*mxj + bx;
@@ -501,12 +569,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sy1 - sz;
-	  sx11 = sy1 + sz;
-	  DrawLine (sx1, sx10, sx1, sx11);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sy1 - sz;
+	sx11 = sy1 + sz;
+	DrawLine (sx1, sx10, sx1, sx11);
+      }
+    }
   }
 }
@@ -546,12 +614,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sx1 - sz;
-	  sx11 = sx1 + sz;
-	  DrawLine (sx10, sy1, sx11, sy1);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sx1 - sz;
+	sx11 = sx1 + sz;
+	DrawLine (sx10, sy1, sx11, sy1);
+      }
+    }
     if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue;
     sx0 = x[i]*mxi + y[i]*mxj + bx;
@@ -563,12 +631,12 @@
 	((sx1 > graph[0].axis[0].fx) && (sx1 < graph[0].axis[0].fx + graph[0].axis[0].dfx) &&
 	 (sy1 < graph[0].axis[1].fy) && (sy1 > graph[0].axis[1].fy + graph[0].axis[1].dfy)))
-      {
-	DrawLine (sx0, sy0, sx1, sy1);
-	if (bar) {
-	  sx10 = sx1 - sz;
-	  sx11 = sx1 + sz;
-	  DrawLine (sx10, sy1, sx11, sy1);
-	}
-      }
+    {
+      DrawLine (sx0, sy0, sx1, sy1);
+      if (bar) {
+	sx10 = sx1 - sz;
+	sx11 = sx1 + sz;
+	DrawLine (sx10, sy1, sx11, sy1);
+      }
+    }
   }
 }
Index: trunk/Ohana/src/opihi/dvo/images.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/images.c	(revision 27529)
+++ trunk/Ohana/src/opihi/dvo/images.c	(revision 27530)
@@ -22,5 +22,8 @@
   char name[256];
   int typehash;
-
+  PhotCode *photcode;
+  int Nsec, photcodeEquiv;
+
+  if (!InitPhotcodes ()) return (FALSE);
   if (!style_args (&graphmode, &argc, argv, &kapa)) goto usage;
 
@@ -42,4 +45,29 @@
     remove_argument (N, &argc, argv);
     HIDDEN = TRUE;
+  }
+
+  photcode = NULL;
+  photcodeEquiv = FALSE;
+  if ((N = get_argument (argc, argv, "-p"))) {
+    remove_argument (N, &argc, argv);
+    photcode = GetPhotcodebyName (argv[N]);
+    if (photcode == NULL) {
+      gprint (GP_ERR, "photcode %s not found\n", argv[N]);
+      return FALSE;
+    }
+    remove_argument (N, &argc, argv);
+    Nsec = GetPhotcodeNsec (photcode->code);
+    if (Nsec != -1) photcodeEquiv = TRUE;
+  }
+  if ((N = get_argument (argc, argv, "-photcode"))) {
+    remove_argument (N, &argc, argv);
+    photcode = GetPhotcodebyName (argv[N]);
+    if (photcode == NULL) {
+      gprint (GP_ERR, "photcode %s not found\n", argv[N]);
+      return FALSE;
+    }
+    remove_argument (N, &argc, argv);
+    Nsec = GetPhotcodeNsec (photcode->code);
+    if (Nsec != -1) photcodeEquiv = TRUE;
   }
 
@@ -123,4 +151,8 @@
     if (TimeSelect && ((image[i].tzero < tzero) || (image[i].tzero+image[i].trate*image[i].NY > tzero + trange))) continue;
     if (!FindMosaicForImage (image, Nimage, i)) continue;
+    if (photcode) {
+      if ( photcodeEquiv && (photcode[0].code != GetPhotcodeEquivCodebyCode(image[i].photcode))) continue;
+      if (!photcodeEquiv && (photcode[0].code != image[i].photcode)) continue;
+    }
 
     Npts = 4;
