diff --git a/ChangeLog b/ChangeLog
index 4415a0f36f97c896934d0c33f8ab64b2fe9c38c6..5ecdeae202a7b88905bd03177a03cbd16673a7a1 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-11  Kevin P. Fleming  <kpfleming@digium.com>
 
+	* apps/app_voicemail.c (forward_message): correct bugs in message forwarding (issue #5718)
+
 	* apps/app_dial.c (wait_for_answer): correct flag copying for automon feature (issue #5720)
 
 	* channels/chan_iax2.c: correct comment
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 0ed74f88ae04799246525d07cd1c5cfa56669f1b..c8a694c39761bf974b16f923bc77d23da0fa801b 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -3479,10 +3479,16 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i
 				ast_log(LOG_DEBUG, "%s", sys);
 				ast_safe_system(sys);
 		
-				if ( (res = count_messages(receiver, todir)) )
+				res = count_messages(receiver, todir);
+
+				if ( (res == ERROR_LOCK_PATH) || (res < 0) ) {
+					if (res == ERROR_LOCK_PATH)
+						ast_log(LOG_WARNING, "Unable to lock the directory %s to forward the requested vmail msg!\n", todir);
+					else
+						ast_log(LOG_WARNING, "Unable to determine how many msgs are in the destination folder!\n");
 					break;
-				else
-					todircount = res;
+				}
+				todircount = res;
 				ast_copy_string(tmp, fmt, sizeof(tmp));
 				stringp = tmp;
 				while ((s = strsep(&stringp, "|"))) {
@@ -3547,8 +3553,7 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i
 					res = ast_play_and_wait(chan, "vm-messages");
 				if (!res)
 					res = ast_play_and_wait(chan, "vm-saved"); */
-				if (!res)
-					res = ast_play_and_wait(chan, "vm-msgsaved");
+				res = ast_play_and_wait(chan, "vm-msgsaved");
 			}	
 		}
 	}