diff --git a/res/res_agi.c b/res/res_agi.c
index 8dc878286e1b86b0e587bc63e40277122523c80d..470d0599b36b076c991845c538b4ad88e929f1d9 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -1125,7 +1125,7 @@ static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, char **argv
 	}
 	fdprintf(agi->fd, "200 result=%d\n", res);
 
-	return res;
+	return res >= 0 ? RESULT_SUCCESS : RESULT_FAILURE;
 }
 
 static int handle_setcallerid(struct ast_channel *chan, AGI *agi, int argc, char **argv)