diff --git a/test/validate/pvGetComplete.st b/test/validate/pvGetComplete.st
index 4f49aa928f2bbdf7a5735595bc90bf9afaab77c1..d97200b77b0150ff4b5e1b54d36ca2a45f772550 100644
--- a/test/validate/pvGetComplete.st
+++ b/test/validate/pvGetComplete.st
@@ -8,10 +8,10 @@ program pvGetCompleteTest
 
 %%#include "../testSupport.h"
 
-#define NRUNS 50000
+#define NRUNS 20000
 
 entry {
-    seq_test_init(2*NRUNS);
+    seq_test_init(1);
     testDiag("start");
 }
 
@@ -25,8 +25,12 @@ ss pvGetComplete {
     state count {
         when (n < NRUNS) {
             n++;
+            if (n%1000==0) {
+                testDiag("passed %d runs", n);
+            }
         } state test
         when () {
+            testPass("%d pvGets completed in time and results agree with predictions", 2*NRUNS);
         } exit
     }
     state test {
@@ -43,15 +47,22 @@ ss pvGetComplete {
             }
         }
         when (delay(2)) {
-            testSkip(2,"completion timeout");
-        } state count
+            testFail("pvGet completion timeout");
+        } state fail
         when (pvGetComplete(r[0]) && pvGetComplete(r[1])) {
             int i;
             for (i=0; i<2; i++) {
-                testOk(r[i]==w[i],"%d==%d",r[i],w[i]);
+                if (r[i] != w[i]) {
+                    testFail("n=%d, i=%d, w=%d, r=%d", n, i, w[i], r[i]);
+                    state fail;
+                }
             }
         } state count
     }
+    state fail {
+        when () {
+        } exit
+    }
 }
 
 exit {