diff --git a/src/core.cc b/src/core.cc
index 8fc2c78..b0772cc 100644
--- a/src/core.cc
+++ b/src/core.cc
@@ -43,12 +43,12 @@
 static Status SchedAdd_(int intf_id, int onu_id, int agg_port_id, int pir);
 static Status SchedRemove_(int intf_id, int onu_id, int agg_port_id);
 
-static inline int mk_sched_id(int onu_id) {
-    return 1023 + onu_id;
+static inline int mk_sched_id(int intf_id, int onu_id) {
+    return 1023 + intf_id * 112 + onu_id;
 }
 
-static inline int mk_agg_port_id(int onu_id) {
-    return 1023 + onu_id;
+static inline int mk_agg_port_id(int intf_id, int onu_id) {
+    return 1023 + intf_id * 112 + onu_id;
 }
 
 Status Enable_(int argc, char *argv[]) {
@@ -246,7 +246,7 @@
         return bcm_to_grpc_err(err, "Failed to enable ONU");
     }
 
-    return SchedAdd_(intf_id, onu_id, mk_agg_port_id(onu_id), pir);
+    return SchedAdd_(intf_id, onu_id, mk_agg_port_id(intf_id, onu_id), pir);
 
     //return Status::OK;
 }
@@ -287,7 +287,7 @@
     // Without sleep the race condition is lost by ~ 20 ms
     std::this_thread::sleep_for(std::chrono::milliseconds(100));
 
-    SchedRemove_(intf_id, onu_id, mk_agg_port_id(onu_id));
+    SchedRemove_(intf_id, onu_id, mk_agg_port_id(intf_id, onu_id));
 
     bcmos_errno err = BCM_ERR_OK;
     bcmbal_subscriber_terminal_cfg cfg;
@@ -608,7 +608,7 @@
 
     {
         bcmbal_tm_sched_id val;
-        val = (bcmbal_tm_sched_id) mk_sched_id(onu_id);
+        val = (bcmbal_tm_sched_id) mk_sched_id(access_intf_id, onu_id);
         BCMBAL_CFG_PROP_SET(&cfg, flow, dba_tm_sched_id, val);
     }
 
@@ -733,7 +733,7 @@
     bcmbal_tm_sched_key key = { };
     bcmbal_tm_sched_type sched_type;
 
-    key.id = mk_sched_id(onu_id);
+    key.id = mk_sched_id(intf_id, onu_id);
     key.dir = BCMBAL_TM_SCHED_DIR_US;
 
     BCMBAL_CFG_INIT(&cfg, tm_sched, key);
@@ -777,7 +777,7 @@
     bcmbal_tm_sched_cfg tm_cfg_us;
     bcmbal_tm_sched_key tm_key_us = { };
 
-    tm_key_us.id = mk_sched_id(onu_id);
+    tm_key_us.id = mk_sched_id(intf_id, onu_id);
     tm_key_us.dir = BCMBAL_TM_SCHED_DIR_US;
 
     BCMBAL_CFG_INIT(&tm_cfg_us, tm_sched, tm_key_us);
