Index: trunk/Ohana/src/addstar/include/addstar.h
===================================================================
--- trunk/Ohana/src/addstar/include/addstar.h	(revision 39050)
+++ trunk/Ohana/src/addstar/include/addstar.h	(revision 39051)
@@ -141,4 +141,5 @@
 int     OLD_RESORT;
 int     READ_XRAD_DATA;
+int     DIFF_WITH_INV;
 
 int    PARALLEL;
Index: trunk/Ohana/src/addstar/src/LoadStars.c
===================================================================
--- trunk/Ohana/src/addstar/src/LoadStars.c	(revision 39050)
+++ trunk/Ohana/src/addstar/src/LoadStars.c	(revision 39051)
@@ -114,4 +114,41 @@
   }
 
+  // only keep the even numbered images
+  if (DIFF_WITH_INV) {
+    if (*Nimages % 2) {
+      fprintf (stderr, "-diff-inv only makes sense if an even number of images are supplied, non-inv first\n");
+      exit (3);
+    }
+
+    // detections from the odd images get bumped by the number of stars:
+    for (i = 0; i < catalog->Nmeasure; i++) {
+      int imageID = catalog->measure[i].imageID;
+      if (imageID % 2) {
+	catalog->measure[i].detID += images[0][imageID-1].nstar;
+	catalog->measure[i].extID += images[0][imageID-1].nstar; // the PSPS ID uses the detID in definition
+      }
+      catalog->measure[i].imageID = imageID / 2;
+    }
+    for (i = 0; i < catalog->Nlensing; i++) {
+      int imageID = catalog->lensing[i].imageID;
+      if (imageID % 2) {
+	catalog->lensing[i].detID += images[0][imageID-1].nstar;
+      }
+      catalog->lensing[i].imageID = imageID / 2;
+    }
+
+    int NoutImages = *Nimages / 2;
+    Image *outImages = NULL;
+    ALLOCATE (outImages, Image, NoutImages);
+    for (i = 0; i < NoutImages; i++) {
+      outImages[i] = images[0][2*i];
+      outImages[i].imageID = i;
+    }
+    free (*images);
+
+    *Nimages = NoutImages;
+    *images = outImages;
+  }
+
   if (*Nimages == 0) {
     if (Nfile == 1) 
Index: trunk/Ohana/src/addstar/src/UpdateImageIDs.c
===================================================================
--- trunk/Ohana/src/addstar/src/UpdateImageIDs.c	(revision 39050)
+++ trunk/Ohana/src/addstar/src/UpdateImageIDs.c	(revision 39051)
@@ -54,4 +54,5 @@
   }
 
+  // why is this not just a loop over catalog->Nmeasure and catalog->Nlensing??
   off_t j, m;
   for (i = 0; i < catalog->Naverage; i++) {
Index: trunk/Ohana/src/addstar/src/args.c
===================================================================
--- trunk/Ohana/src/addstar/src/args.c	(revision 39050)
+++ trunk/Ohana/src/addstar/src/args.c	(revision 39051)
@@ -87,4 +87,9 @@
     remove_argument (N, &argc, argv);
     READ_XRAD_DATA = TRUE;
+  }
+  DIFF_WITH_INV = FALSE;
+  if ((N = get_argument (argc, argv, "-diff-inv"))) {
+    remove_argument (N, &argc, argv);
+    DIFF_WITH_INV = TRUE;
   }
 
