Index: trunk/Ohana/src/opihi/dvo/gimages.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/gimages.c	(revision 12727)
+++ trunk/Ohana/src/opihi/dvo/gimages.c	(revision 12750)
@@ -4,9 +4,10 @@
   
   int i, j, N, Nimage, Nfound, *subset, Nsubset, status;
-  double ra, dec, Ra, Dec, X, Y;
+  double ra, dec, Ra, Dec, X, Y, Yo;
   double trange, t;
   int TimeSelect, PixelCoords, TimeFormat, PhotCodeSelect;
   time_t tzero, TimeReference;
   char name[64], *date;
+  int typehash;
 
   PhotCode *code;
@@ -76,4 +77,8 @@
   BuildChipMatch (image, Nimage);
 
+  int DistortImage = wordhash ("-DIS");
+  int TriangleUp   = wordhash ("TRP-");
+  int TriangleDn   = wordhash ("TRM-");
+
   Nfound = 0;
   for (j = 0; j < Nsubset; j++) {
@@ -93,14 +98,38 @@
     if (!finite(Y)) continue;
     if (!status) continue;
-    if (!strcmp(&image[i].coords.ctype[4], "-DIS")) {
-	if (X < -0.5*image[i].NX) continue;
-	if (Y < -0.5*image[i].NY) continue;
-	if (X > +0.5*image[i].NX) continue;
-	if (Y > +0.5*image[i].NY) continue;
-    } else {
-	if (X < 0) continue;
-	if (Y < 0) continue;
-	if (X > image[i].NX) continue;
-	if (Y > image[i].NY) continue;
+
+    typehash = wordhash (&image[i].coords.ctype[4]);
+
+    if (typehash == DistortImage) {
+      if (X < -0.5*image[i].NX) continue;
+      if (Y < -0.5*image[i].NY) continue;
+      if (X > +0.5*image[i].NX) continue;
+      if (Y > +0.5*image[i].NY) continue;
+      goto got_spot;
+    } 
+
+    typehash = wordhash (image[i].coords.ctype);
+    if (typehash == TriangleUp) {
+      if (Y < -0.5*image[i].NY) continue;
+      Yo = +0.5*image[i].NY + 2.0*(image[i].NY/image[i].NX)*X;
+      if (Y > Yo) continue;
+      Yo = +0.5*image[i].NY - 2.0*(image[i].NY/image[i].NX)*X;
+      if (Y > Yo) continue;
+      goto got_spot;
+    }
+    if (typehash == TriangleDn) {
+      if (Y > +0.5*image[i].NY) continue;
+      Yo = -0.5*image[i].NY + 2.0*(image[i].NY/image[i].NX)*X;
+      if (Y < Yo) continue;
+      Yo = -0.5*image[i].NY - 2.0*(image[i].NY/image[i].NX)*X;
+      if (Y < Yo) continue;
+      goto got_spot;
+    }
+
+    {
+      if (X < 0) continue;
+      if (Y < 0) continue;
+      if (X > image[i].NX) continue;
+      if (Y > image[i].NY) continue;
     }
 
@@ -109,4 +138,5 @@
     ***/
 
+  got_spot:
     date = sec_to_date (image[i].tzero);
 
