Index: trunk/Ohana/src/addstar/src/mkcmf.c
===================================================================
--- trunk/Ohana/src/addstar/src/mkcmf.c	(revision 38993)
+++ trunk/Ohana/src/addstar/src/mkcmf.c	(revision 38994)
@@ -72,8 +72,12 @@
   if ((N = get_argument (argc, argv, "-forcedwarp"))) {
     remove_argument (N, &argc, argv);
-    WriteXSRC = WriteXFIT = WriteXRAD = WriteDETF = TRUE;
+    WriteXSRC = WriteXFIT = WriteXRAD = TRUE;
     isForcedWarp = TRUE;
   }
 
+  if (!isStack && !isForcedWarp) {
+    WriteDETF = TRUE;
+  }
+  
   static char *photcode = "SIMTEST.r.Chip";
   if ((N = get_argument (argc, argv, "-photcode"))) {
@@ -1627,4 +1631,59 @@
 
 int WriteDETFtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
+
+  int i;
+  
+  Header header;
+  FTable ftable;
+
+  char extdata[80];
+  snprintf(extdata, 80, "%s.deteff", extroot);
+
+  int Nbins = 13;
+  float OFFSET[13] = {-2.0, -1.0, -0.5, -0.25, -0.1, -0.05, 0.0, 0.05, 0.1, 0.25, 0.5, 1.0, 2.0};
+
+  {
+    gfits_create_table_header(&header, "BINTABLE", extdata);
+
+    gfits_define_bintable_column(&header, "1E", "OFFSET"      , "label for field   1", NULL, 1.0, 0.0);
+    gfits_define_bintable_column(&header, "1J", "COUNTS"      , "label for field   2", NULL, 1.0, FT_BZERO_INT32);
+    gfits_define_bintable_column(&header, "1E", "DIFF.MEAN"   , "label for field   3", NULL, 1.0, 0.0);
+    gfits_define_bintable_column(&header, "1E", "DIFF.STDEV"  , "label for field   4", NULL, 1.0, 0.0);
+    gfits_define_bintable_column(&header, "1E", "ERR.MEAN"    , "label for field   5", NULL, 1.0, 0.0);
+
+    gfits_create_table(&header, &ftable);
+
+    int   *COUNTS;     ALLOCATE(COUNTS, int, Nbins);
+    float *DIFF_MEAN;  ALLOCATE(DIFF_MEAN, float, Nbins);
+    float *DIFF_STDEV; ALLOCATE(DIFF_STDEV, float, Nbins);
+    float *ERR_MEAN;   ALLOCATE(ERR_MEAN, float, Nbins);
+
+    float rate = 2.0 + 0.2 * (drand48() - 0.5);
+    
+    for (i = 0; i < Nbins; i++) {
+      COUNTS[i] = (int) floor(460.0 / (1.0 + exp(rate * OFFSET[i])));
+      DIFF_MEAN[i] = (drand48() - 0.5) / 100.0;
+      if (OFFSET[i] > 0) {
+	DIFF_MEAN[i] += -0.5 * OFFSET[i];
+      }
+      DIFF_STDEV[i] = sqrt(2) * fabs(DIFF_MEAN[i]);
+      ERR_MEAN[i] = ((rate - 2.0) + (OFFSET[i] + 2.0)/16.0);
+    }
+
+    gfits_set_bintable_column(&header, &ftable, "OFFSET", OFFSET, Nbins);
+    gfits_set_bintable_column(&header, &ftable, "COUNTS", COUNTS, Nbins);
+    gfits_set_bintable_column(&header, &ftable, "DIFF.MEAN", DIFF_MEAN, Nbins);
+    gfits_set_bintable_column(&header, &ftable, "DIFF.STDEV", DIFF_STDEV, Nbins);
+    gfits_set_bintable_column(&header, &ftable, "ERR.MEAN", ERR_MEAN, Nbins);
+    
+    gfits_modify(&header, "HIERARCH DETEFF.MAGREF", "%f", 1, -6.806806);
+    gfits_modify(&header, "HIERARCH DETEFF.NUM", "%d", 1, 500);
+  }
+
+  gfits_fwrite_Theader(fits, &header);
+  gfits_fwrite_table(fits, &ftable);
+  gfits_free_header(&header);
+  gfits_free_table(&ftable);
+  
   return TRUE;
 }
