diff --git a/src/seq/seq_if.c b/src/seq/seq_if.c
index 894b53185738f8a1229c2fd8f01c6916be887522..6e17a1e50bbe83ab89c2da378314d17145047a78 100644
--- a/src/seq/seq_if.c
+++ b/src/seq/seq_if.c
@@ -120,6 +120,12 @@ epicsShareFunc pvStat epicsShareAPI seq_pvGet(SS_ID ss, VAR_ID varId, enum compT
 		switch (epicsEventTryWait(getSem))
 		{
 		case epicsEventWaitOK:
+			if (ss->getReq[varId] != NULL)
+			{
+				/* previous request timed out but user
+				   did not call pvGetComplete */
+				ss->getReq[varId] = NULL;
+			}
 			status = check_connected(dbch, meta);
 			if (status) return epicsEventSignal(getSem), status;
 			break;
@@ -392,6 +398,12 @@ epicsShareFunc pvStat epicsShareAPI seq_pvPut(SS_ID ss, VAR_ID varId, enum compT
 		switch (epicsEventTryWait(putSem))
 		{
 		case epicsEventWaitOK:
+			if (ss->putReq[varId] != NULL)
+			{
+				/* previous request timed out but user
+				   did not call pvPutComplete */
+				ss->putReq[varId] = NULL;
+			}
 			break;
 		case epicsEventWaitTimeout:
 			meta->status = pvStatERROR;