diff --git a/channel.c b/channel.c
index 1f50afefbdb1d2bddade5ad4f91661d125d0ae17..a56dfd91ee35b4ca7d0febdcd6947e07d7d82332 100755
--- a/channel.c
+++ b/channel.c
@@ -893,8 +893,11 @@ struct ast_channel *ast_waitfor_nandfds(struct ast_channel **c, int n, int *fds,
 		time(&now);
 	for (x=0;x<n;x++) {
 		c[x]->blocking = 0;
-		if (havewhen && c[x]->whentohangup && (now > c[x]->whentohangup))
+		if (havewhen && c[x]->whentohangup && (now > c[x]->whentohangup)) {
 			c[x]->_softhangup |= AST_SOFTHANGUP_TIMEOUT;
+			if (!winner)
+				winner = c[x];
+		}
 		for (y=0;y<AST_MAX_FDS;y++) {
 			if (c[x]->fds[y] > -1) {
 				if ((FD_ISSET(c[x]->fds[y], &rfds) || FD_ISSET(c[x]->fds[y], &efds)) && !winner) {