diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c
index 55eb9f54b091dd4861a6a9ef535b3aae5d114058..d3f2f925ab35863c66164cc760553b48f19977cf 100644
--- a/src/lib-sieve/sieve-result.c
+++ b/src/lib-sieve/sieve-result.c
@@ -1475,8 +1475,7 @@ void sieve_result_execution_destroy(struct sieve_result_execution **_rexec)
 }
 
 static void
-sieve_result_implicit_keep_execute(struct sieve_result_execution *rexec,
-				   bool success)
+sieve_result_implicit_keep_execute(struct sieve_result_execution *rexec)
 {
 	const struct sieve_action_exec_env *aenv = &rexec->action_env;
 	struct sieve_result *result = aenv->result;
@@ -1486,6 +1485,7 @@ sieve_result_implicit_keep_execute(struct sieve_result_execution *rexec,
 	struct sieve_action_execution *aexec_keep = &rexec->keep;
 	struct sieve_result_action *ract_keep = &rexec->keep_action;
 	struct sieve_action *act_keep = &ract_keep->action;
+	bool success = (rexec->status == SIEVE_EXEC_OK);
 
 	if (rexec->keep_equiv_action != NULL) {
 		e_debug(rexec->event, "No implicit keep needed "
@@ -1579,8 +1579,8 @@ sieve_result_implicit_keep_execute(struct sieve_result_execution *rexec,
 		}
 	}
 
-	e_debug(rexec->event, "Execute implicit keep (failure=%s)",
-		(!success ? "yes" : "no"));
+	e_debug(rexec->event, "Execute implicit keep (status=%s)",
+		sieve_execution_exitcode_to_str(rexec->status));
 
 	/* Initialize side effects */
 	sieve_action_execution_add_side_effects(rexec, aexec_keep, ract_keep);
@@ -1633,7 +1633,7 @@ sieve_result_implicit_keep_finalize(struct sieve_result_execution *rexec,
 	/* Start keep if necessary */
 	if (act_keep->def == NULL ||
 	    aexec_keep->state != SIEVE_ACTION_EXECUTION_STATE_EXECUTED) {
-		sieve_result_implicit_keep_execute(rexec, success);
+		sieve_result_implicit_keep_execute(rexec);
 	/* Switch to failure keep if necessary. */
 	} else if (rexec->keep_success && !success){
 		e_debug(rexec->event, "Switch to failure implicit keep");
@@ -1645,7 +1645,7 @@ sieve_result_implicit_keep_finalize(struct sieve_result_execution *rexec,
 		i_zero(aexec_keep);
 
 		/* Start failure keep action. */
-		sieve_result_implicit_keep_execute(rexec, success);
+		sieve_result_implicit_keep_execute(rexec);
 	}
 	if (act_keep->def == NULL)
 		return rexec->keep_status;
@@ -1931,10 +1931,8 @@ int sieve_result_execute(struct sieve_result_execution *rexec, int status,
 		/* Execute implicit keep if the transaction failed or when the
 		   implicit keep was not canceled during transaction.
 		 */
-		if (rexec->status != SIEVE_EXEC_OK || rexec->keep_implicit) {
-			sieve_result_implicit_keep_execute(
-				rexec, (rexec->status == SIEVE_EXEC_OK));
-		}
+		if (rexec->status != SIEVE_EXEC_OK || rexec->keep_implicit)
+			sieve_result_implicit_keep_execute(rexec);
 	}
 
 	/* Transaction commit/rollback */