Index: /trunk/psastro/src/psastroChooseRefstars.c
===================================================================
--- /trunk/psastro/src/psastroChooseRefstars.c	(revision 15196)
+++ /trunk/psastro/src/psastroChooseRefstars.c	(revision 15197)
@@ -29,4 +29,9 @@
     pmFPAview *view = pmFPAviewAlloc (0);
     pmFPA *fpa = input->fpa;
+
+    // sort by mag
+    psVector *index = psArraySortIndex (NULL, refs, psastroSortByMag);
+
+    int nMax = psMetadataLookupS32 (&status, recipe, "PSASTRO.MAX.NREF");
 
     // this loop selects the matched stars for all chips
@@ -61,5 +66,5 @@
                 // project the reference objects to this chip
                 for (int i = 0; i < refs->n; i++) {
-                    pmAstromObj *ref = pmAstromObjCopy(refs->data[i]);
+                    pmAstromObj *ref = pmAstromObjCopy(refs->data[index->data.S32[i]]);
 
                     psProject (ref->TP, ref->sky, fpa->toSky);
@@ -76,4 +81,6 @@
                 skip:
                     psFree (ref);
+
+		    if (nMax && (refstars->n >= nMax)) break;
                 }
                 psTrace ("psastro", 4, "Added %ld refstars\n", refstars->n);
@@ -93,4 +100,5 @@
     }
 
+    psFree (index);
     psFree (view);
     return true;
