Index: /trunk/Ohana/src/opihi/cmd.data/periodogram-fm.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/periodogram-fm.c	(revision 40312)
+++ /trunk/Ohana/src/opihi/cmd.data/periodogram-fm.c	(revision 40313)
@@ -8,4 +8,10 @@
   if ((N = get_argument (argc, argv, "-v"))) {
     VERBOSE = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  int OPTIMAL = FALSE;
+  if ((N = get_argument (argc, argv, "-optimal"))) {
+    OPTIMAL = TRUE;
     remove_argument (N, &argc, argv);
   }
@@ -82,5 +88,5 @@
   // XXX consider choice of period or frequency step
   double P = minP;
-  for (Np = 0; Np < Nperiods; Np++) {
+  for (Np = 0; (Np < Nperiods) && (P <= maxP); Np++) {
     double w = 2*M_PI/P;
     
@@ -154,4 +160,10 @@
     if (VERBOSE) gprint (GP_ERR, "tau: %f, P: %f, ratio: %f, dTime: %f, nextP: %f\n", tau, P, dP, dTime, P*dP);
 
+    if (OPTIMAL) {
+      dP = 0.4 * SQ(P) / dTime;
+      P += dP;
+      continue;
+    }
+
     if (LINEAR) {
       P += dP;
