diff --git a/src/sys/logging/plog.c b/src/sys/logging/plog.c
index f4cf58c..024ec42e 100644
--- a/src/sys/logging/plog.c
+++ b/src/sys/logging/plog.c
@@ -642,7 +642,7 @@ PetscErrorCode  PetscLogStageGetVisible(PetscLogStage stage, PetscBool  *isVisib
 . name  - The stage name
 
   Output Parameter:
-. stage - The stage
+. stage - The stage, , or -1 if no stage with that name exists
 
   Level: intermediate
 
diff --git a/src/sys/logging/utils/stagelog.c b/src/sys/logging/utils/stagelog.c
index dbecf68..9d93e49 100644
--- a/src/sys/logging/utils/stagelog.c
+++ b/src/sys/logging/utils/stagelog.c
@@ -579,7 +579,7 @@ PetscErrorCode  PetscStageLogGetVisible(PetscStageLog stageLog, int stage, Petsc
 - name     - The stage name
 
   Output Parameter:
-. stage    - The stage id
+. stage    - The stage id, or -1 if it does not exist
 
   Level: developer
 
@@ -598,10 +598,9 @@ PetscErrorCode  PetscStageLogGetStage(PetscStageLog stageLog, const char name[],
   *stage = -1;
   for (s = 0; s < stageLog->numStages; s++) {
     ierr = PetscStrcasecmp(stageLog->stageInfo[s].name, name, &match);CHKERRQ(ierr);
+    *stage = s;
     if (match) break;
   }
-  if (s == stageLog->numStages) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG, "No stage named %s", name);
-  *stage = s;
   PetscFunctionReturn(0);
 }
 
