Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/Makefile
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/Makefile	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/Makefile	(revision 38285)
@@ -50,4 +50,5 @@
 $(SRC)/build_links.$(ARCH).o \
 $(SRC)/replace_match.$(ARCH).o \
+$(SRC)/replace_tycho.$(ARCH).o \
 $(SRC)/merge_catalogs_new.$(ARCH).o \
 $(SRC)/merge_catalogs_old.$(ARCH).o
@@ -73,4 +74,5 @@
 $(SRC)/build_links.$(ARCH).o \
 $(SRC)/replace_match.$(ARCH).o \
+$(SRC)/replace_tycho.$(ARCH).o \
 $(SRC)/merge_catalogs_new.$(ARCH).o \
 $(SRC)/merge_catalogs_old.$(ARCH).o
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/include/dvomerge.h
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/include/dvomerge.h	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/include/dvomerge.h	(revision 38285)
@@ -40,4 +40,5 @@
 char  *ALTERNATE_PHOTCODE_FILE;
 int    REPLACE_BY_PHOTCODE;
+int    REPLACE_TYCHO;
 int    FORCE_MERGE;
 char  *UPDATE_CATFORMAT;
@@ -230,2 +231,5 @@
 int RepairTableCPT_V1(char *cptFilenameSrc, char *cptFilenameTgt, char *cpsFilenameSrc, char *cpsFilenameTgt, Measure *measure, off_t Nmeasure, Image *image, off_t Nimage, myIndexType *imageIDindex, char catformat);
 int *ReadDeleteListExternID(char *filename, int *nindex);
+
+void replace_tycho_init ();
+int  replace_tycho (Average *averageInp, Measure *measureInp, Average *averageOut, Measure *measureOut);
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/args.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/args.c	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/args.c	(revision 38285)
@@ -69,4 +69,11 @@
   if ((N = get_argument (*argc, argv, "-replace"))) {
     REPLACE_BY_PHOTCODE = TRUE;
+    remove_argument (N, argc, argv);
+  }
+
+  /* replace measurement, don't duplicate */
+  REPLACE_TYCHO = FALSE;
+  if ((N = get_argument (*argc, argv, "-replace-tycho"))) {
+    REPLACE_TYCHO = TRUE;
     remove_argument (N, argc, argv);
   }
@@ -220,4 +227,11 @@
   }
 
+  /* replace measurement, don't duplicate */
+  REPLACE_TYCHO = FALSE;
+  if ((N = get_argument (*argc, argv, "-replace-tycho"))) {
+    REPLACE_TYCHO = TRUE;
+    remove_argument (N, argc, argv);
+  }
+
   NTHREADS = 0;
   if ((N = get_argument (*argc, argv, "-threads"))) {
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge.c	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge.c	(revision 38285)
@@ -7,4 +7,5 @@
   ConfigInit (&argc, argv);
   dvomerge_args (&argc, argv);
+  replace_tycho_init();
 
   if (argc == 6) {
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c	(revision 38285)
@@ -297,4 +297,5 @@
     if (VERIFY_CATALOG_ONLY) { snprintf (tmpline, DVO_MAX_PATH, "%s -verify-catalogs",  command); strcpy (command, tmpline); }
     if (REPLACE_BY_PHOTCODE) { snprintf (tmpline, DVO_MAX_PATH, "%s -replace",          command); strcpy (command, tmpline); }
+    if (REPLACE_TYCHO)       { snprintf (tmpline, DVO_MAX_PATH, "%s -replace-tycho",    command); strcpy (command, tmpline); }
     if (PARALLEL_INPUT)      { snprintf (tmpline, DVO_MAX_PATH, "%s -parallel-input",   command); strcpy (command, tmpline); }
     if (FORCE_MERGE)         { snprintf (tmpline, DVO_MAX_PATH, "%s -force-merge",      command); strcpy (command, tmpline); }
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge_client.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge_client.c	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/dvomerge_client.c	(revision 38285)
@@ -6,4 +6,5 @@
   ConfigInit (&argc, argv);
   dvomerge_client_args (&argc, argv);
+  replace_tycho_init();
 
   SkyTable *outsky, *insky;
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/merge_catalogs_old.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/merge_catalogs_old.c	(revision 38284)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/merge_catalogs_old.c	(revision 38285)
@@ -196,6 +196,18 @@
     // 4) average properties from the input and the output db need to be properly merged.
 
+    int Nreplace = 0;
+    if (REPLACE_TYCHO) {
+      int Mout = output[0].average[n].measureOffset;  
+      int Minp =  input[0].average[N].measureOffset;
+      Nreplace = replace_tycho (&output[0].average[n], &output[0].measure[Mout], &input[0].average[N], &input[0].measure[Minp]);
+      if (Nreplace == 6) {
+	output[0].found_t[n] = Nmeas;
+	i++;
+	continue;
+      }
+    }
+
     /** add ALL measurements for this input average object **/
-    for (Nin = 0; Nin < input[0].average[N].Nmeasure; Nin ++) {
+    for (Nin = Nreplace; Nin < input[0].average[N].Nmeasure; Nin ++) {
       offset = input[0].average[N].measureOffset + Nin;
 
Index: /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/replace_tycho.c
===================================================================
--- /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/replace_tycho.c	(revision 38285)
+++ /branches/eam_branches/ipp-20150419/Ohana/src/dvomerge/src/replace_tycho.c	(revision 38285)
@@ -0,0 +1,50 @@
+# include "dvomerge.h"
+
+static short TYCHO_B;
+static short TYCHO_V;
+
+void replace_tycho_init () {
+  
+  TYCHO_B = GetPhotcodeCodebyName ("TYCHO_B"); myAssert (TYCHO_B, "TYCHO_B photcode not found\n");
+  TYCHO_V = GetPhotcodeCodebyName ("TYCHO_V"); myAssert (TYCHO_V, "TYCHO_V photcode not found\n");
+}
+
+int replace_tycho (Average *averageInp, Measure *measureInp, Average *averageOut, Measure *measureOut) {
+
+  int i;
+
+  int Nindex = 0;
+  int index[6];
+
+  // find all tycho measurements
+  for (i = 0; (i < averageOut->Nmeasure) && (Nindex < 6); i++) {
+
+    int valid = FALSE;
+    valid = valid || (measureOut[i].photcode == TYCHO_B);
+    valid = valid || (measureOut[i].photcode == TYCHO_V);
+    if (!valid) continue;
+
+    index[Nindex] = i;
+    Nindex ++;
+  }
+
+  if (Nindex != 6) {
+    fprintf (stderr, "did not find all tycho measurements? (Nindex = %d)\n", Nindex);
+  }
+
+  for (i = 0; i < Nindex; i++) {
+    int Nm = index[i];
+
+    int averef = measureOut[Nm].averef;
+    int objID  = measureOut[Nm].objID;
+    int catID  = measureOut[Nm].catID;
+
+    measureOut[Nm] = measureInp[i];
+
+    measureOut[Nm].averef = averef;
+    measureOut[Nm].objID  = objID;
+    measureOut[Nm].catID  = catID;
+  }
+
+  return Nindex;
+}
