Index: branches/eam_branches/relphot.20200519/src/args.c
===================================================================
--- branches/eam_branches/relphot.20200519/src/args.c	(revision 41362)
+++ branches/eam_branches/relphot.20200519/src/args.c	(revision 41387)
@@ -317,32 +317,54 @@
   }
 
+  FREEZE_IMAGES = FALSE;
+  if ((N = get_argument (argc, argv, "-imfreeze"))) {
+    remove_argument (N, &argc, argv);
+    FREEZE_IMAGES = TRUE;
+  }
+  FREEZE_MOSAICS = FALSE;
+  if ((N = get_argument (argc, argv, "-mosfreeze"))) {
+    remove_argument (N, &argc, argv);
+    FREEZE_MOSAICS = TRUE;
+  }
+  CALIBRATE_STACKS_AND_WARPS = FALSE;
+  if ((N = get_argument (argc, argv, "-only-stacks-and-warps"))) {
+    remove_argument (N, &argc, argv);
+    CALIBRATE_STACKS_AND_WARPS = TRUE;
+  }
+  USE_MCAL_PSF_FOR_STACK_APER = FALSE;
+  if ((N = get_argument (argc, argv, "-use-mcal-psf-for-stack-aper"))) {
+    remove_argument (N, &argc, argv);
+    USE_MCAL_PSF_FOR_STACK_APER = TRUE;
+  }
+
   // calibrate the photometry by night / time period
   TGROUP_ZEROPT = FALSE;
+  char *TGROUP_FILENAME = NULL;
   if ((N = get_argument (argc, argv, "-tgroup"))) {
     TGROUP_ZEROPT = TRUE;
     remove_argument (N, &argc, argv);
-    loadTGroups (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-
-  FREEZE_IMAGES = FALSE;
-  if ((N = get_argument (argc, argv, "-imfreeze"))) {
+    TGROUP_FILENAME = strcreate(argv[N]);
     remove_argument (N, &argc, argv);
     FREEZE_IMAGES = TRUE;
   }
-  FREEZE_MOSAICS = FALSE;
-  if ((N = get_argument (argc, argv, "-mosfreeze"))) {
-    remove_argument (N, &argc, argv);
-    FREEZE_MOSAICS = TRUE;
-  }
-  CALIBRATE_STACKS_AND_WARPS = FALSE;
-  if ((N = get_argument (argc, argv, "-only-stacks-and-warps"))) {
-    remove_argument (N, &argc, argv);
-    CALIBRATE_STACKS_AND_WARPS = TRUE;
-  }
-  USE_MCAL_PSF_FOR_STACK_APER = FALSE;
-  if ((N = get_argument (argc, argv, "-use-mcal-psf-for-stack-aper"))) {
-    remove_argument (N, &argc, argv);
-    USE_MCAL_PSF_FOR_STACK_APER = TRUE;
+  if ((N = get_argument (argc, argv, "-tgroups"))) {
+    if (TGROUP_ZEROPT) {
+      fprintf (stderr, "use only one of -tgroups and -tgroup (same meaning)\n");
+      exit (2);
+    }
+    TGROUP_ZEROPT = TRUE;
+    remove_argument (N, &argc, argv);
+    TGROUP_FILENAME = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+    FREEZE_IMAGES = TRUE;
+  }
+  TGROUP_FIT_AIRMASS = FALSE;
+  if ((N = get_argument (argc, argv, "-tgroup-fit-airmass"))) {
+    if (!TGROUP_ZEROPT) {
+      fprintf (stderr, "-tgroup-fit-airmass requires -tgroup (filename) option\n");
+      exit (2);
+    }
+    TGROUP_FIT_AIRMASS = TRUE;
+    remove_argument (N, &argc, argv);
   }
 
@@ -528,4 +550,9 @@
   if (argc != 1) relphot_usage ();
 
+  if (TGROUP_ZEROPT) {
+    loadTGroups (TGROUP_FILENAME);
+    free (TGROUP_FILENAME);
+  }
+
   return mode;
 }
@@ -551,4 +578,6 @@
   FreePhotcodeTable();
   
+  freeTGroups();
+
   ohana_memcheck (VERBOSE);
   ohana_memdump (VERBOSE);
