diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c
index 4df5621..3637349 100644
--- a/openbsc/src/nat/bsc_mgcp_utils.c
+++ b/openbsc/src/nat/bsc_mgcp_utils.c
@@ -38,8 +38,20 @@
 #include <errno.h>
 #include <unistd.h>
 
+int bsc_mgcp_nr_multiplexes(int max_endpoints)
+{
+	int div = max_endpoints / 32;
+
+	if ((max_endpoints % 32) != 0)
+		div += 1;
+
+	return div;
+}
+
 static int bsc_init_endps_if_needed(struct bsc_connection *con)
 {
+	int multiplexes;
+
 	/* we have done that */
 	if (con->_endpoint_status)
 		return 0;
@@ -48,9 +60,10 @@
 	if (!con->cfg)
 		return -1;
 
-	con->number_multiplexes = con->cfg->number_multiplexes;
-	con->_endpoint_status = talloc_zero_array(con, char,
-						  (32 * con->cfg->number_multiplexes) + 1);
+	multiplexes = bsc_mgcp_nr_multiplexes(con->cfg->max_endpoints);
+	con->number_multiplexes = multiplexes;
+	con->max_endpoints = con->cfg->max_endpoints;
+	con->_endpoint_status = talloc_zero_array(con, char, 32 * multiplexes + 1);
 	return con->_endpoint_status == NULL;
 }
 
@@ -58,7 +71,7 @@
 {
 	int multiplex;
 	int timeslot;
-	const int number_endpoints = 32 * bsc->number_multiplexes;
+	const int number_endpoints = bsc->max_endpoints;
 	int i;
 
 	mgcp_endpoint_to_timeslot(bsc->last_endpoint, &multiplex, &timeslot);
@@ -82,6 +95,14 @@
 
 		endpoint = mgcp_timeslot_to_endpoint(multiplex, timeslot);
 
+		/* Now check if we are allowed to assign this one */
+		if (endpoint >= bsc->max_endpoints) {
+			multiplex = 0;
+			timeslot = 1;
+			endpoint = mgcp_timeslot_to_endpoint(multiplex, timeslot);
+		}
+
+
 		if (bsc->_endpoint_status[endpoint] == 0) {
 			bsc->_endpoint_status[endpoint] = 1;
 			con->bsc_endp = endpoint;
diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c
index 0470387..6a3b274 100644
--- a/openbsc/src/nat/bsc_nat_utils.c
+++ b/openbsc/src/nat/bsc_nat_utils.c
@@ -126,7 +126,7 @@
 	conf->token = talloc_strdup(conf, token);
 	conf->nr = nat->num_bsc;
 	conf->nat = nat;
-	conf->number_multiplexes = 1;
+	conf->max_endpoints = 32;
 
 	INIT_LLIST_HEAD(&conf->lac_list);
 
diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c
index 5366dd3..761c299 100644
--- a/openbsc/src/nat/bsc_nat_vty.c
+++ b/openbsc/src/nat/bsc_nat_vty.c
@@ -113,7 +113,7 @@
 		vty_out(vty, "  description %s%s", bsc->description, VTY_NEWLINE);
 	if (bsc->acc_lst_name)
 		vty_out(vty, "  access-list-name %s%s", bsc->acc_lst_name, VTY_NEWLINE);
-	vty_out(vty, "  number-multiplexes %d%s", bsc->number_multiplexes, VTY_NEWLINE);
+	vty_out(vty, "  max-endpoints %d%s", bsc->max_endpoints, VTY_NEWLINE);
 }
 
 static int config_write_bsc(struct vty *vty)
@@ -173,6 +173,7 @@
 	int i, j, endp;
 
 	llist_for_each_entry(con, &_nat->bsc_connections, list_entry) {
+		int max;
 		if (!con->cfg)
 			continue;
 		if (con->cfg->nr != nr)
@@ -183,7 +184,8 @@
 			continue;
 
 		vty_out(vty, "MGCP Status for %d%s", con->cfg->nr, VTY_NEWLINE);
-		for (i = 0; i < con->number_multiplexes; ++i) {
+		max = bsc_mgcp_nr_multiplexes(con->max_endpoints);
+		for (i = 0; i < max; ++i) {
 			for (j = 0; j < 32; ++j) {
 				endp = mgcp_timeslot_to_endpoint(i, j);
 				vty_out(vty, " Endpoint 0x%x %s%s", endp,
@@ -634,13 +636,13 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_bsc_nr_multip, cfg_bsc_nr_multip_cmd,
-      "number-multiplexes <1-64>",
-      "Number of multiplexes on a BSC\n" "Number of ports\n")
+DEFUN(cfg_bsc_max_endps, cfg_bsc_max_endps_cmd,
+      "max-endpoints <1-1024>",
+      "Highest endpoint to use (exclusively)\n" "Number of ports\n")
 {
 	struct bsc_config *conf = vty->index;
 
-	conf->number_multiplexes = atoi(argv[0]);
+	conf->max_endpoints = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
 
@@ -744,7 +746,7 @@
 	install_element(NAT_BSC_NODE, &cfg_bsc_paging_cmd);
 	install_element(NAT_BSC_NODE, &cfg_bsc_desc_cmd);
 	install_element(NAT_BSC_NODE, &cfg_bsc_acc_lst_name_cmd);
-	install_element(NAT_BSC_NODE, &cfg_bsc_nr_multip_cmd);
+	install_element(NAT_BSC_NODE, &cfg_bsc_max_endps_cmd);
 
 	mgcp_vty_init();
 
