Index: trunk/psastro/src/psastro.h
===================================================================
--- trunk/psastro/src/psastro.h	(revision 35419)
+++ trunk/psastro/src/psastro.h	(revision 35715)
@@ -83,5 +83,5 @@
 bool              psastroOneChipGrid (pmFPA *fpa, pmChip *chip, psArray *refset, psArray *rawset, psMetadata *recipe, psMetadata *updates);
 bool              psastroOneChipFit (pmFPA *fpa, pmChip *chip, pmReadout *readout, psArray *refset, psArray *rawset, psMetadata *recipe, psMetadata *updates);
-bool              psastroChooseRefstars (pmConfig *config, psArray *refs, const char *source);
+bool              psastroChooseRefstars (pmConfig *config, psArray *refs, const char *source, bool saveExistingMatchedRefs);
 bool              psastroRefstarSubset (pmReadout *readout);
 pmLumFunc        *psastroLuminosityFunction (psArray *stars, pmLumFunc *rawFunc);
Index: trunk/psastro/src/psastroAnalysis.c
===================================================================
--- trunk/psastro/src/psastroAnalysis.c	(revision 35419)
+++ trunk/psastro/src/psastroAnalysis.c	(revision 35715)
@@ -86,5 +86,7 @@
     }
 
-    if (!psastroChooseRefstars (config, refs, "PSASTRO.INPUT")) {
+    bool skipastro = psMetadataLookupBool (&status, config->arguments, "PSASTRO.SKIP.ASTRO");
+
+    if (!psastroChooseRefstars (config, refs, "PSASTRO.INPUT", skipastro)) {
         psError (PSASTRO_ERR_UNKNOWN, false, "failed to select reference data for chips\n");
         psFree(refs);
@@ -108,5 +110,10 @@
         mosastro  = psMetadataLookupBool (&status, recipe, "PSASTRO.MOSAIC.MODE");
     }
-    if (!chipastro && !mosastro) {
+
+    if (skipastro) {
+        chipastro = false;
+        mosastro = false;
+        psLogMsg ("psastro", 3, "skip astrometry mode, accepting input astrometry\n");
+    } else if (!chipastro && !mosastro) {
         psLogMsg ("psastro", 3, "no astrometry mode selected, assuming chip astrometry\n");
         chipastro = true;
@@ -144,12 +151,14 @@
     }
 
-    if (!psastroZeroPoint (config)) {
-        psError(psErrorCodeLast(), false, "Failed to calculate zero point.");
-        return false;
-    }
+    if (!skipastro) {
+        if (!psastroZeroPoint (config)) {
+            psError(psErrorCodeLast(), false, "Failed to calculate zero point.");
+            return false;
+        }
 
-    if (!psastroAstromGuessCheck (config)) {
-        psError(psErrorCodeLast(), false, "Failed to check astrometry guess.");
-        return false;
+        if (!psastroAstromGuessCheck (config)) {
+            psError(psErrorCodeLast(), false, "Failed to check astrometry guess.");
+            return false;
+        }
     }
 
Index: trunk/psastro/src/psastroArguments.c
===================================================================
--- trunk/psastro/src/psastroArguments.c	(revision 35419)
+++ trunk/psastro/src/psastroArguments.c	(revision 35715)
@@ -74,4 +74,5 @@
 
     // apply mosastro mode?
+    bool mosastro = false;
     if ((N = psArgumentGet (argc, argv, "-mosastro"))) {
         psArgumentRemove (N, &argc, argv);
@@ -81,7 +82,9 @@
         psArgumentRemove (N, &argc, argv);
         psMetadataAddBool (config->arguments, PS_LIST_TAIL, "PSASTRO.MOSAIC.MODE", PS_META_REPLACE, "", true);
+        mosastro = true;
     }
 
     // apply chipastro mode?
+    bool chipastro = false;
     if ((N = psArgumentGet (argc, argv, "-chipastro"))) {
         psArgumentRemove (N, &argc, argv);
@@ -91,4 +94,18 @@
         psArgumentRemove (N, &argc, argv);
         psMetadataAddBool (config->arguments, PS_LIST_TAIL, "PSASTRO.CHIP.MODE", PS_META_REPLACE, "", true);
+        chipastro = true;
+    }
+    if ((N = psArgumentGet (argc, argv, "-skipastro"))) {
+        psArgumentRemove (N, &argc, argv);
+        if (mosastro) {
+            psError(PSASTRO_ERR_ARGUMENTS, true, "cannot specify +mosastro with -skipastro");
+            psErrorStackPrint(stderr, "exit");
+            return false;
+        }
+        if (chipastro) {
+            psError(PSASTRO_ERR_ARGUMENTS, true, "cannot specify +chipastro with -skipastro");
+            return false;
+        }
+        psMetadataAddBool (config->arguments, PS_LIST_TAIL, "PSASTRO.SKIP.ASTRO", PS_META_REPLACE, "", true);
     }
 
Index: trunk/psastro/src/psastroChooseRefstars.c
===================================================================
--- trunk/psastro/src/psastroChooseRefstars.c	(revision 35419)
+++ trunk/psastro/src/psastroChooseRefstars.c	(revision 35715)
@@ -20,5 +20,5 @@
 }
 
-bool psastroChooseRefstars (pmConfig *config, psArray *refs, const char *source) {
+bool psastroChooseRefstars (pmConfig *config, psArray *refs, const char *source, bool saveExistingMatchedRefs) {
 
     bool status;
@@ -55,5 +55,7 @@
 	// analysis.  however, we are re-doing the astrometry here, so remove
 	// that prior set of matched references
-	psMetadataRemoveKey (fpa->analysis, "MATCHED_REFS");
+        if (!saveExistingMatchedRefs) {
+            psMetadataRemoveKey (fpa->analysis, "MATCHED_REFS");
+        }
     }
 
Index: trunk/psastro/src/psastroExtractAnalysis.c
===================================================================
--- trunk/psastro/src/psastroExtractAnalysis.c	(revision 35419)
+++ trunk/psastro/src/psastroExtractAnalysis.c	(revision 35715)
@@ -44,5 +44,5 @@
     }
 
-    if (!psastroChooseRefstars (config, refs, "PSASTRO.EXTRACT.ASTROM")) {
+    if (!psastroChooseRefstars (config, refs, "PSASTRO.EXTRACT.ASTROM", false)) {
         psError (PSASTRO_ERR_UNKNOWN, false, "failed to select reference data for chips\n");
         psFree(refs);
