diff --git a/lib/test_qra64.f90 b/lib/test_qra64.f90
index c16abde2f..f816244a3 100644
--- a/lib/test_qra64.f90
+++ b/lib/test_qra64.f90
@@ -33,7 +33,7 @@ program test_qra64
 
   nsps=7680
   i50=-28
-  ia=-24
+  ia=-20
   ib=-33
   if(nsnr.ne.0) then
      ia=nsnr
@@ -63,19 +63,17 @@ program test_qra64
 
   write(*,1000) (j,j=0,11)
   write(12,1000) (j,j=0,11)
-1000 format(/'SNR d  Dop Sync Dec1 DecN Bad',i6,11i4,'  tdec dtavg dtrms'/97('-'))
+1000 format(/'SNR d  Dop Sync  Dec Bad',i6,11i4,'  tdec'/80('-'))
 
   dterr=tsym/4.0
-  nferr=max(1,nint(0.5*baud))
+  nferr=max(1,nint(0.5*baud),nint(fdop/3.0))
+  ndecodes0=nfiles
   
   do nsnr=ia,ib,-1
      nsync=0
      ndecodes=0
      nfalse=0
      nretcode=0
-     navg=0
-     sumxdt=0.
-     sqxdt=0.
      write(cmd1(55:57),'(i3)') nsnr
      call system(cmd1)
      call sec0(0,tdec)
@@ -89,17 +87,15 @@ program test_qra64
         read(line(11:20),*) xdt,nf
         irc=-1
         if(line(23:23).ne.' ') read(line(45:46),*) irc
-!        write(71,3071) dt,xdt,abs(xdt-dt),dterr,nf0,nf,abs(nf-nf0),nferr,irc
-!3071    format(4f6.2,4i5,i8)
-        if(abs(xdt-dt).le.dterr .and. abs(nf-nf0).le.nferr) nsync=nsync+1
-        if(irc.lt.0) cycle
         decok=index(line,'W9XYZ').gt.0
+        if((abs(xdt-dt).le.dterr .and. abs(nf-nf0).le.nferr) .or. decok) then
+           nsync=nsync+1
+        endif
+        if(irc.lt.0) cycle
         if(decok) then
            i=irc
            if(i.le.11) then
               ndecodes=ndecodes + 1
-              sumxdt=sumxdt + xdt
-              sqxdt=sqxdt + xdt*xdt
               navg=navg + 1
            else
               i=mod(i,10)
@@ -110,22 +106,24 @@ program test_qra64
            nfalse=nfalse + 1
            print*,'False: ',line
         endif
-     enddo
+     enddo  ! iline
 10   close(10)
-     xdt_avg=0.
-     xdt_rms=0.
-     if(ndecodes.ge.2) then
-        xdt_avg=sumxdt/ndecodes
-        xdt_rms=sqxdt/(ndecodes-1) - xdt_avg*xdt_avg
+     write(*,1100) nsnr,ndepth,fDop,nsync,ndecodes,nfalse,nretcode,   &
+          tdec/nfiles
+     write(12,1100) nsnr,ndepth,fDop,nsync,ndecodes,nfalse,nretcode,  &
+          tdec/nfiles
+1100 format(i3,i2,f5.1,2i5,i4,i6,11i4,f6.2)
+     if(ndecodes.lt.nfiles/2 .and. ndecodes0.ge.nfiles/2) then
+        snr_thresh=nsnr + float(nfiles/2 - ndecodes)/(ndecodes0-ndecodes)
+        write(13,1200) ndepth,fdop,csubmode,snr_thresh
+1200    format(i1,f6.1,2x,a1,f7.1)
+        flush(13)
      endif
-     write(*,1100) nsnr,ndepth,fDop,nsync,ndecodes,navg,nfalse,nretcode,   &
-          tdec/nfiles,xdt_avg,xdt_rms
-     write(12,1100) nsnr,ndepth,fDop,nsync,ndecodes,navg,nfalse,nretcode,  &
-          tdec/nfiles,xdt_avg,xdt_rms
-1100 format(i3,i2,f5.1,3i5,i4,i6,11i4,3f6.2)
      flush(6)
      flush(12)
-  enddo
+     if(ndecodes.eq.0) exit              !Bail out if no decodes at this SNR
+     ndecodes0=ndecodes
+  enddo  ! nsnr
 
 999 end program test_qra64