Index: trunk/Ohana/src/opihi/dvo/images.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/images.c	(revision 27435)
+++ 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;
