diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index d508b9c6dd264bb9cfb6356cc8b4ede9a0a00148..c985f7119f2bb42bdf880c46f94ea221dcc2849d 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -623,6 +623,7 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat
 		  case AST_CAUSE_NO_ANSWER:
 			  if (ast_channel_state(ast) != AST_STATE_UP) {
 				  endpt_signal(sub->parent->line_id, "congestion", "on", NULL);
+                                  strncpy(sub->parent->callStatus, "Disconnected", CALL_STATUS_MAX_LEN);
 				  break;
 			  }
 			  res = -1;
@@ -634,6 +635,7 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat
 				if (ast_channel_state(ast) != AST_STATE_UP) {
 					/* XXX We should play a busy tone here!! */
                                         sub->channel_state = CALLENDED;
+                                        strncpy(sub->parent->callStatus, "Disconnected", CALL_STATUS_MAX_LEN);
 					endpt_signal(sub->parent->line_id, "busy", "on", NULL);
 					break;
 				}
@@ -1037,10 +1039,11 @@ static int brcm_answer(struct ast_channel *ast)
 	struct brcm_pvt *pvt = sub->parent;
 
 	ast_debug(1, "brcm_answer(%s)\n", ast_channel_name(ast));
-
 	pvt_lock(pvt, "TELCHAN answer");
-	strncpy(pvt->callStatus, "Connected", CALL_STATUS_MAX_LEN);
 
+        /*If the call is not in CALLENDED state set status to connected */
+        if(sub->channel_state != CALLENDED)
+           strncpy(pvt->callStatus, "Connected", CALL_STATUS_MAX_LEN);
 	/* For attended call transfer, if the transfer target has accepted the call initiated by
 	 * us as the tranferee, we can terminate the original call with the transferor */
 	if (sub->channel_state == TRANSFERING) {