diff --git a/device_simulator/voltha_bal_driver.c b/device_simulator/voltha_bal_driver.c
index 83a83ef..c430b64 100755
--- a/device_simulator/voltha_bal_driver.c
+++ b/device_simulator/voltha_bal_driver.c
@@ -96,7 +96,7 @@
    /*
     * Write reply back to the client
     */
-   ret_val = context->gcc_stream->write(context, &bal_reboot, 0);
+   ret_val = context->gcc_stream->write(context, &bal_reboot, -1);
    is_grpc_write_pending(ret_val);
 
    grpc_c_status_t status;
@@ -142,7 +142,7 @@
    /*
     * Write reply back to the client
     */
-   ret_val = context->gcc_stream->write(context, &bal_err, 0);
+   ret_val = context->gcc_stream->write(context, &bal_err, -1);
    is_grpc_write_pending(ret_val);
 
    grpc_c_status_t status;
@@ -204,7 +204,7 @@
     get_stats.data = &stat_data;
     get_stats.key = &stat_key;
 
-    ret_val = context->gcc_stream->write(context, &get_stats, 0);
+    ret_val = context->gcc_stream->write(context, &get_stats, -1);
     is_grpc_write_pending(ret_val);
 
     grpc_c_status_t status;
@@ -266,7 +266,7 @@
     * Write reply back to the client
     */
 
-   ret_val = context->gcc_stream->write(context, &bal_err, 0);
+   ret_val = context->gcc_stream->write(context, &bal_err, -1);
    is_grpc_write_pending(ret_val);
 
    grpc_c_status_t status;
@@ -428,7 +428,7 @@
    /*
     * Write reply back to the client
     */
-   ret_val = context->gcc_stream->write(context, &bal_err, 0);
+   ret_val = context->gcc_stream->write(context, &bal_err, -1);
    is_grpc_write_pending(ret_val);
 
    grpc_c_status_t status;
@@ -495,15 +495,15 @@
 
 void bal_get_ind__free_mem_group_ind(BalIndications *balIndCfg)
 {
-   int i = 0;
+   unsigned int i = 0;
    free(balIndCfg->group_ind->data->flows->val);
    free(balIndCfg->group_ind->data->flows);
    for (i = 0; i < balIndCfg->group_ind->data->members->n_val; i++)
    {
       free(balIndCfg->group_ind->data->members->val[i]->queue);
       free(balIndCfg->group_ind->data->members->val[i]->action);
+      free(balIndCfg->group_ind->data->members->val[i]);
    }
-   free(balIndCfg->group_ind->data->members->val);
    free(balIndCfg->group_ind->data->members);
    free(balIndCfg->group_ind->data);
    free(balIndCfg->group_ind->key);
@@ -525,7 +525,7 @@
 {
    free(balIndCfg->interface_los->data);
    free(balIndCfg->interface_los->hdr);
-   free(balIndCfg->interface_los); 
+   free(balIndCfg->interface_los);
    free(balIndCfg);
 }
 
@@ -707,7 +707,7 @@
        case BAL_INDICATIONS__U_ACCESS_TERM_IND:
           bal_get_ind__free_mem_access_term_ind(balIndCfg);
           break;
- 
+
        case BAL_INDICATIONS__U_ACCESS_TERM_IND_OP_STATE:
           bal_get_ind__free_mem_access_term_ind_op_state(balIndCfg);
           break;
@@ -777,7 +777,7 @@
           break;
 
        default:
-          ASFVOLT_LOG(ASFVOLT_ERROR, "Unknown case %lu\n", balIndCfg->u_case);
+          ASFVOLT_LOG(ASFVOLT_ERROR, "Unknown case %u\n", balIndCfg->u_case);
           break;
     }
 }
@@ -803,7 +803,7 @@
    pthread_mutex_lock(&bal_ind_queue_lock);
    node = get_bal_indication_node();
    pthread_mutex_unlock(&bal_ind_queue_lock);
-     
+
    if(node != NULL)
    {
       bal_indication = node->bal_indication;
@@ -823,7 +823,7 @@
     * Write reply back to the client
     */
 
-   ret_val = context->gcc_stream->write(context, bal_indication, 0);
+   ret_val = context->gcc_stream->write(context, bal_indication, -1);
    is_grpc_write_pending(ret_val);
 
    grpc_c_status_t status;
@@ -836,7 +836,7 @@
    {
       ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to write status\n");
    }
-   
+
    /*Free memory for 'bal_indication' and 'node'*/
    if (bal_indication->ind_present)
    {
diff --git a/src/asfvolt16_driver.h b/src/asfvolt16_driver.h
index 6871e2b..ab24309 100755
--- a/src/asfvolt16_driver.h
+++ b/src/asfvolt16_driver.h
@@ -26,6 +26,8 @@
 #include "bal_errno.grpc-c.h"
 #include "bal.grpc-c.h"
 
+#include <stdio.h>
+
 #define ASFVOLT_ERROR 1
 #define ASFVOLT_INFO  2
 #define ASFVOLT_DEBUG 3
diff --git a/src/bal_indications_hdlr.c b/src/bal_indications_hdlr.c
index b807c73..8066d18 100755
--- a/src/bal_indications_hdlr.c
+++ b/src/bal_indications_hdlr.c
@@ -141,7 +141,7 @@
 
       list_node *bal_indication_node = malloc(sizeof(list_node));
       bal_indication_node->bal_indication = balIndCfg;
-      
+
       pthread_mutex_lock(&bal_ind_queue_lock);
       add_bal_indication_node(bal_indication_node);
       pthread_mutex_unlock(&bal_ind_queue_lock);
@@ -491,6 +491,7 @@
 bcmos_errno bal_group_indication_cb(bcmbal_obj *obj)
 {
    bcmos_errno result = BCM_ERR_OK;
+   unsigned int i = 0;
 
    if(BCMBAL_OBJ_ID_GROUP != obj->obj_type ||
       bcmbal_group_auto_id_ind != obj->subgroup)
@@ -557,51 +558,54 @@
       balIndCfg->group_ind->data->members->n_val = group_ind->data.members.len;
 
       BalGroupMemberInfo *balMemberInfo;
-      balMemberInfo = (BalGroupMemberInfo *)malloc(sizeof(BalGroupMemberInfo) * \
-                                         balIndCfg->group_ind->data->members->n_val);
-      memset(balMemberInfo, 0, sizeof(BalGroupMemberInfo) * \
-                                         balIndCfg->group_ind->data->members->n_val);
-      bal_group_member_info__init(balMemberInfo);
-      balIndCfg->group_ind->data->members->val = balMemberInfo;
-
-      balMemberInfo->has_intf_id = BAL_GRPC_PRES;
-      balMemberInfo->intf_id = group_ind->data.members.val->intf_id;
-      balMemberInfo->has_svc_port_id = BAL_GRPC_PRES;
-      balMemberInfo->svc_port_id = group_ind->data.members.val->svc_port_id;
-
       BalAction *balAction;
-      balAction = malloc(sizeof(BalAction));
-      memset(balAction, 0, sizeof(BalAction));
-      bal_action__init(balAction);
-      balMemberInfo->action = balAction;
-
-      balMemberInfo->action->has_presence_mask = BAL_GRPC_PRES;
-      balMemberInfo->action->presence_mask = group_ind->data.members.val->action.presence_mask;
-      balMemberInfo->action->has_cmds_bitmask = BAL_GRPC_PRES;
-      balMemberInfo->action->cmds_bitmask = group_ind->data.members.val->action.cmds_bitmask;
-      balMemberInfo->action->has_o_vid = BAL_GRPC_PRES;
-      balMemberInfo->action->o_vid = group_ind->data.members.val->action.o_vid;
-      balMemberInfo->action->has_o_pbits = BAL_GRPC_PRES;
-      balMemberInfo->action->o_pbits = group_ind->data.members.val->action.o_pbits;
-      balMemberInfo->action->has_o_tpid = BAL_GRPC_PRES;
-      balMemberInfo->action->o_tpid = group_ind->data.members.val->action.o_tpid;
-      balMemberInfo->action->has_i_vid = BAL_GRPC_PRES;
-      balMemberInfo->action->i_vid = group_ind->data.members.val->action.i_vid;
-      balMemberInfo->action->has_i_pbits = BAL_GRPC_PRES;
-      balMemberInfo->action->i_pbits = group_ind->data.members.val->action.i_pbits;
-      balMemberInfo->action->has_i_tpid = BAL_GRPC_PRES;
-      balMemberInfo->action->i_tpid = group_ind->data.members.val->action.i_tpid;
-
       BalTmQueueRef *balQueue;
-      balQueue = malloc(sizeof(BalTmQueueRef));
-      memset(balQueue, 0, sizeof(BalTmQueueRef));
-      bal_tm_queue_ref__init(balQueue);
-      balMemberInfo->queue = balQueue;
+      for (i = 0; i < balIndCfg->group_ind->data->members->n_val; i++)
+      {
+         balMemberInfo = malloc(sizeof(BalGroupMemberInfo));
+         memset(balMemberInfo, 0, sizeof(BalGroupMemberInfo));
+         bal_group_member_info__init(balMemberInfo);
 
-      balMemberInfo->queue->has_sched_id = BAL_GRPC_PRES;
-      balMemberInfo->queue->sched_id = group_ind->data.members.val->queue.sched_id;
-      balMemberInfo->queue->has_queue_id = BAL_GRPC_PRES;
-      balMemberInfo->queue->queue_id = group_ind->data.members.val->queue.queue_id;
+         balMemberInfo->has_intf_id = BAL_GRPC_PRES;
+         balMemberInfo->intf_id = group_ind->data.members.val->intf_id;
+         balMemberInfo->has_svc_port_id = BAL_GRPC_PRES;
+         balMemberInfo->svc_port_id = group_ind->data.members.val->svc_port_id;
+
+         balAction = malloc(sizeof(BalAction));
+         memset(balAction, 0, sizeof(BalAction));
+         bal_action__init(balAction);
+         balMemberInfo->action = balAction;
+
+         balMemberInfo->action->has_presence_mask = BAL_GRPC_PRES;
+         balMemberInfo->action->presence_mask = group_ind->data.members.val->action.presence_mask;
+         balMemberInfo->action->has_cmds_bitmask = BAL_GRPC_PRES;
+         balMemberInfo->action->cmds_bitmask = group_ind->data.members.val->action.cmds_bitmask;
+         balMemberInfo->action->has_o_vid = BAL_GRPC_PRES;
+         balMemberInfo->action->o_vid = group_ind->data.members.val->action.o_vid;
+         balMemberInfo->action->has_o_pbits = BAL_GRPC_PRES;
+         balMemberInfo->action->o_pbits = group_ind->data.members.val->action.o_pbits;
+         balMemberInfo->action->has_o_tpid = BAL_GRPC_PRES;
+         balMemberInfo->action->o_tpid = group_ind->data.members.val->action.o_tpid;
+         balMemberInfo->action->has_i_vid = BAL_GRPC_PRES;
+         balMemberInfo->action->i_vid = group_ind->data.members.val->action.i_vid;
+         balMemberInfo->action->has_i_pbits = BAL_GRPC_PRES;
+         balMemberInfo->action->i_pbits = group_ind->data.members.val->action.i_pbits;
+         balMemberInfo->action->has_i_tpid = BAL_GRPC_PRES;
+         balMemberInfo->action->i_tpid = group_ind->data.members.val->action.i_tpid;
+
+         balQueue = malloc(sizeof(BalTmQueueRef));
+         memset(balQueue, 0, sizeof(BalTmQueueRef));
+         bal_tm_queue_ref__init(balQueue);
+         balMemberInfo->queue = balQueue;
+
+         balMemberInfo->queue->has_sched_id = BAL_GRPC_PRES;
+         balMemberInfo->queue->sched_id = group_ind->data.members.val->queue.sched_id;
+         balMemberInfo->queue->has_queue_id = BAL_GRPC_PRES;
+         balMemberInfo->queue->queue_id = group_ind->data.members.val->queue.queue_id;
+
+         balIndCfg->group_ind->data->members->val[i] = balMemberInfo;
+      }
+
 
       BalIdList *balFlows;
       balFlows = malloc(sizeof(BalIdList));
diff --git a/src/bal_indications_hdlr.h b/src/bal_indications_hdlr.h
index abaa88c..84b8e27 100755
--- a/src/bal_indications_hdlr.h
+++ b/src/bal_indications_hdlr.h
@@ -32,7 +32,7 @@
 #include "asfvolt16_driver.h"
 #include "bal_indications_queue.h"
 
-#define BAL_GRPC_PRES    1 
+#define BAL_GRPC_PRES    1
 
 extern bcmos_errno bal_indication_cb(bcmbal_obj *obj);
 extern bcmos_errno bal_acc_term_osc_indication_cb(bcmbal_obj *obj);
diff --git a/src/bal_indications_queue.c b/src/bal_indications_queue.c
index ffc9a15..36ec466 100644
--- a/src/bal_indications_queue.c
+++ b/src/bal_indications_queue.c
@@ -15,6 +15,9 @@
 */
 
 #include "bal_indications_queue.h"
+#include "asfvolt16_driver.h"
+
+long unsigned int indication_drop_count = 0;
 
 /*
  * Implements a circular queue whose size can grow upto MAX_QUEUE_SIZE defined.
@@ -50,8 +53,8 @@
    /*'bal_ind_queue_head' should be thread safe there could be simultaneous
      write from BAL and adapter trying to read from the 'bal_ind_queue_head'.
      So, protect it under a mutex(bal_ind_queue_lock), before using this MACRO*/
-   if (num_of_nodes == 0 && 
-       bal_ind_queue_head == NULL && 
+   if (num_of_nodes == 0 &&
+       bal_ind_queue_head == NULL &&
        bal_ind_queue_tail == NULL ) {
       /*Case where the queue is empty*/
       bal_ind_queue_head = node;
@@ -60,27 +63,29 @@
       bal_ind_queue_tail->next = node;
       ++num_of_nodes;
    }
-   else if (num_of_nodes == 1 && 
-            bal_ind_queue_head != NULL && 
+   else if (num_of_nodes == 1 &&
+            bal_ind_queue_head != NULL &&
             bal_ind_queue_tail != NULL ) {
       bal_ind_queue_head->next = node;
       bal_ind_queue_tail = node;
       bal_ind_queue_tail->next = bal_ind_queue_head;
       ++num_of_nodes;
    }
-   else if (num_of_nodes > 1 && 
-            num_of_nodes < MAX_QUEUE_SIZE && 
-            bal_ind_queue_head != NULL && 
+   else if (num_of_nodes > 1 &&
+            num_of_nodes < MAX_QUEUE_SIZE &&
+            bal_ind_queue_head != NULL &&
             bal_ind_queue_tail != NULL ) {
       bal_ind_queue_tail->next = node;
       bal_ind_queue_tail = node;
       bal_ind_queue_tail->next = bal_ind_queue_head;
       ++num_of_nodes;
    }
-   else if (num_of_nodes == MAX_QUEUE_SIZE && 
-            bal_ind_queue_head != NULL && 
+   else if (num_of_nodes == MAX_QUEUE_SIZE &&
+            bal_ind_queue_head != NULL &&
             bal_ind_queue_tail != NULL  ) {
       list_node *head_ref = bal_ind_queue_head;
+      ASFVOLT_LOG(ASFVOLT_DEBUG, "Queue full, deleting a node. Drop cnt = %lu\n",\
+                                    ++indication_drop_count);
       bal_ind_queue_tail->next = node;
       bal_ind_queue_tail = node;
       bal_ind_queue_head = bal_ind_queue_head->next;
diff --git a/src/bal_indications_queue.h b/src/bal_indications_queue.h
index 075f747..72b6013 100755
--- a/src/bal_indications_queue.h
+++ b/src/bal_indications_queue.h
@@ -19,7 +19,7 @@
 
 #include "bal_indications.grpc-c.h"
 
-#define MAX_QUEUE_SIZE 25
+#define MAX_QUEUE_SIZE 1000
 
 typedef struct node {
     struct node *next;
@@ -38,4 +38,4 @@
 
 
 
-#endif /*__BAL_INDICATIONS_QUEUE_H__*/
\ No newline at end of file
+#endif /*__BAL_INDICATIONS_QUEUE_H__*/
