Index: /trunk/Ohana/src/imregister/imreg/args.imsearch.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/args.imsearch.c	(revision 25)
+++ /trunk/Ohana/src/imregister/imreg/args.imsearch.c	(revision 26)
@@ -115,6 +115,6 @@
 
     criteria.Proc = -1;
-    if (strcasecmp (argv[N], "t")) criteria.Proc = TRUE;
-    if (strcasecmp (argv[N], "f")) criteria.Proc = FALSE;
+    if (!strcasecmp (argv[N], "t")) criteria.Proc = TRUE;
+    if (!strcasecmp (argv[N], "f")) criteria.Proc = FALSE;
     remove_argument (N, &argc, argv);
     if (criteria.Proc == -1) {
@@ -124,4 +124,19 @@
   }
 
+  criteria.DistSelect = FALSE;
+  if (N = get_argument (argc, argv, "-dist")) {
+    criteria.DistSelect = TRUE;
+    remove_argument (N, &argc, argv);
+
+    criteria.Dist = -1;
+    if (!strcasecmp (argv[N], "t")) criteria.Dist = TRUE;
+    if (!strcasecmp (argv[N], "f")) criteria.Dist = FALSE;
+    remove_argument (N, &argc, argv);
+    if (criteria.Dist == -1) {
+      fprintf (stderr, "ERROR: -dist (t/f)\n");
+      exit (1);
+    }
+  }
+
   /*** command-line options which modify the output list */
   if (N = get_argument (argc, argv, "-treg")) {
@@ -157,38 +172,74 @@
 
   /*** command-line options which modify behavior (delete, modify, newpath, mef2split split2mef */
-  output.delete = output.modify = 0;
-  output.Newpath = output.mef2split = output.split2mef = FALSE;
-
-  if (N = get_argument (argc, argv, "-del")) {
-    remove_argument (N, &argc, argv);
-    output.delete ++;
-  }
+  output.delete = output.modify = FALSE;
+  output.modify_path = output.modify_dist = FALSE;
+  output.mef2split = output.split2mef = FALSE;
+
   if (N = get_argument (argc, argv, "-delete")) {
     remove_argument (N, &argc, argv);
-    output.delete ++;
-  }
-  if (N = get_argument (argc, argv, "-newpath")) {
-    output.Newpath = TRUE;
-    remove_argument (N, &argc, argv);
-    output.oldpath = strcreate (argv[N]);
-    remove_argument (N, &argc, argv);
-    output.newpath = strcreate (argv[N]);
-    remove_argument (N, &argc, argv);
-    output.modify ++;
-  }
-  if (N = get_argument (argc, argv, "-mef2split")) {
-    remove_argument (N, &argc, argv);
-    output.mef2split = TRUE;
-    output.modify ++;
-  }
-  if (N = get_argument (argc, argv, "-split2mef")) {
-    remove_argument (N, &argc, argv);
-    output.split2mef = TRUE;
-    output.modify ++;
-  }
-  if (output.modify + output.delete > 1) {
-    fprintf (stderr, "can't specify more than one modifier at a time\n");
+    output.delete = TRUE;
+  }
+
+  if (N = get_argument (argc, argv, "-modify")) {
+    if (output.delete) { 
+      fprintf (stderr, "can't specify more than one modifier at a time\n");
+      exit (1);
+    }
+    remove_argument (N, &argc, argv);
+    output.modify = TRUE;
+    
+    if (!strcasecmp (argv[N], "path")) {
+      output.modify_path = TRUE;
+      remove_argument (N, &argc, argv);
+      output.oldpath = strcreate (argv[N]);
+      remove_argument (N, &argc, argv);
+      output.newpath = strcreate (argv[N]);
+      remove_argument (N, &argc, argv);
+      goto valid_modify;
+    }
+
+    if (!strcasecmp (argv[N], "mode")) {
+      remove_argument (N, &argc, argv);
+      if (!strcasecmp (argv[N], "mef")) {
+	output.mef2split = TRUE;
+	remove_argument (N, &argc, argv);
+	goto valid_modify;
+      }
+      if (!strcasecmp (argv[N], "split")) {
+	output.split2mef = TRUE;
+	remove_argument (N, &argc, argv);
+	goto valid_modify;
+      }
+    }
+
+    if (!strcasecmp (argv[N], "dist")) {
+      output.modify_dist = TRUE;
+      remove_argument (N, &argc, argv);
+      if (!strcasecmp (argv[N], "t")) {
+	output.dist = TRUE;
+	remove_argument (N, &argc, argv);
+	goto valid_modify;
+      }
+      if (!strcasecmp (argv[N], "f")) {
+	output.dist = FALSE;
+	remove_argument (N, &argc, argv);
+	goto valid_modify;
+      }
+    }
+
+    if (!strcasecmp (argv[N], "help")) {
+      fprintf (stderr, "-modify option: \n");
+      fprintf (stderr, "  -modify path (oldpath) (newpath)\n"); 
+      fprintf (stderr, "  -modify mode (mef | split)\n"); 
+      fprintf (stderr, "  -modify dist (t | f)\n\n"); 
+      fprintf (stderr, "  mode mef : convert mef to split\n");
+      fprintf (stderr, "  mode split : convert split to mef\n");
+      exit (2);
+    }
+
+    fprintf (stderr, "invalid -modify option, try -modify help\n");
     exit (1);
   }
+ valid_modify:
 
   if (argc != 1) {
@@ -197,5 +248,5 @@
     fprintf (stderr, "  [-etime exptime] [-filter name] [-name string] [-proc t/f]\n");
     fprintf (stderr, "  [-treg] [-seq] [-pt] [-table] [-cadctable] [-bintable]\n");
-    fprintf (stderr, "  [-del] [-delete] [-newpath (oldpath) (newpath)] [-mef2split] [-split2mef]\n");
+    fprintf (stderr, "  [-delete] [-modify (options)]\n");
     exit (1);
   }
Index: /trunk/Ohana/src/imregister/imreg/match.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/match.c	(revision 25)
+++ /trunk/Ohana/src/imregister/imreg/match.c	(revision 26)
@@ -31,5 +31,6 @@
     if (criteria.ExptimeSelect && (fabs (image[i].exptime - criteria.Exptime) > 5.0)) continue;
     if (criteria.NameSelect    && (strncasecmp (image[i].filename, criteria.Name, Nname))) continue;
-    if (criteria.ProcSelect    && (criteria.Proc ^ (image[i].bias == 0.0))) continue;
+    if (criteria.ProcSelect    && (criteria.Proc ^ (image[i].bias != 0.0))) continue;
+    if (criteria.DistSelect    && (criteria.Dist ^ (image[i].flag && IMREG_DIST))) continue;
 
     match[N] = i;
Index: /trunk/Ohana/src/imregister/imreg/modify.c
===================================================================
--- /trunk/Ohana/src/imregister/imreg/modify.c	(revision 25)
+++ /trunk/Ohana/src/imregister/imreg/modify.c	(revision 26)
@@ -6,5 +6,5 @@
   int i, j, Nold;
   char *tmppath;
-  char *ext, *root, *path;
+  char *ext, *root, *path, dist;
   int Nimage;
   RegImage *image;
@@ -13,7 +13,10 @@
 
   /* create some necessary variables */
-  if (output.newpath) { 
+  if (output.modify_path) { 
     Nold = strlen (output.oldpath);
     ALLOCATE (tmppath, char, 128);
+  }
+  if (output.modify_dist) {
+    dist = (output.dist) ? 0xff : ~IMREG_DIST;
   }
 
@@ -23,5 +26,5 @@
     i = match[j];
 
-    if (output.newpath) {
+    if (output.modify_path) {
       if (!strncmp (image[i].pathname, output.oldpath, Nold)) {
 	strcpy (tmppath, &image[i].pathname[Nold]);
@@ -59,4 +62,10 @@
       }
     }
+
+    if (output.modify_dist) {
+      if (output.dist)  image[i].flag |=  IMREG_DIST;
+      if (!output.dist) image[i].flag &= ~IMREG_DIST;
+    }
+
   }
 
