diff --git a/openbsc/include/openbsc/bsc_nat_sccp.h b/openbsc/include/openbsc/bsc_nat_sccp.h
index 73e9c69..fcfd23b 100644
--- a/openbsc/include/openbsc/bsc_nat_sccp.h
+++ b/openbsc/include/openbsc/bsc_nat_sccp.h
@@ -79,10 +79,13 @@
 	int con_type;
 	int con_local;
 
-	/* GSM audio handling. That is 32 * multiplex + ts */
+	/*
+	 * audio handling. Remember if we have ever send a CRCX,
+	 * remember the endpoint used by the MSC and BSC.
+	 */
 	int crcx;
-	int msc_timeslot;
-	int bsc_timeslot;
+	int msc_endp;
+	int bsc_endp;
 
 	/* timeout handling */
 	struct timespec creation_time;
diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c
index e3258f0..4983c35 100644
--- a/openbsc/src/nat/bsc_mgcp_utils.c
+++ b/openbsc/src/nat/bsc_mgcp_utils.c
@@ -45,7 +45,7 @@
 	uint16_t cic;
 	uint8_t timeslot;
 	uint8_t multiplex;
-	int combined;
+	int endp;
 
 	if (!msg->l3h) {
 		LOGP(DNAT, LOGL_ERROR, "Assignment message should have l3h pointer.\n");
@@ -68,22 +68,22 @@
 	multiplex = (cic & ~0x1f) >> 5;
 
 
-	combined = (32 * multiplex) + timeslot;
+	endp = mgcp_timeslot_to_endpoint(multiplex, timeslot);
 
 	/* find stale connections using that endpoint */
 	llist_for_each_entry(mcon, &con->bsc->nat->sccp_connections, list_entry) {
-		if (mcon->msc_timeslot == combined) {
+		if (mcon->msc_endp == endp) {
 			LOGP(DNAT, LOGL_ERROR,
-			     "Timeslot %d was assigned to 0x%x and now 0x%x\n",
-			     combined,
+			     "Endpoint %d was assigned to 0x%x and now 0x%x\n",
+			     endp,
 			     sccp_src_ref_to_int(&mcon->patched_ref),
 			     sccp_src_ref_to_int(&con->patched_ref));
 			bsc_mgcp_dlcx(mcon);
 		}
 	}
 
-	con->msc_timeslot = combined;
-	con->bsc_timeslot = con->msc_timeslot;
+	con->msc_endp = endp;
+	con->bsc_endp = endp;
 	return 0;
 }
 
@@ -147,19 +147,17 @@
 
 void bsc_mgcp_init(struct sccp_connections *con)
 {
-	con->msc_timeslot = -1;
-	con->bsc_timeslot = -1;
+	con->msc_endp = -1;
+	con->bsc_endp = -1;
 	con->crcx = 0;
 }
 
 void bsc_mgcp_dlcx(struct sccp_connections *con)
 {
 	/* send a DLCX down the stream */
-	if (con->bsc_timeslot != -1 && con->crcx) {
-		int bsc_endp = mgcp_timeslot_to_endpoint(0, con->bsc_timeslot);
-		int msc_endp = mgcp_timeslot_to_endpoint(0, con->msc_timeslot);
-		bsc_mgcp_send_dlcx(con->bsc, bsc_endp);
-		bsc_mgcp_free_endpoint(con->bsc->nat, msc_endp);
+	if (con->bsc_endp != -1 && con->crcx) {
+		bsc_mgcp_send_dlcx(con->bsc, con->bsc_endp);
+		bsc_mgcp_free_endpoint(con->bsc->nat, con->msc_endp);
 	}
 
 	bsc_mgcp_init(con);
@@ -172,9 +170,9 @@
 	struct sccp_connections *sccp;
 
 	llist_for_each_entry(sccp, &nat->sccp_connections, list_entry) {
-		if (sccp->msc_timeslot == -1)
+		if (sccp->msc_endp == -1)
 			continue;
-		if (mgcp_timeslot_to_endpoint(0, sccp->msc_timeslot) != endpoint)
+		if (sccp->msc_endp != endpoint)
 			continue;
 
 		con = sccp;
diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c
index d8af1c2..b72eb4e 100644
--- a/openbsc/src/nat/bsc_nat_vty.c
+++ b/openbsc/src/nat/bsc_nat_vty.c
@@ -121,7 +121,7 @@
 			sccp_src_ref_to_int(&con->patched_ref),
 			con->has_remote_ref,
 			sccp_src_ref_to_int(&con->remote_ref),
-			con->msc_timeslot, con->bsc_timeslot,
+			con->msc_endp, con->bsc_endp,
 			bsc_con_type_to_string(con->con_type),
 			VTY_NEWLINE);
 	}
diff --git a/openbsc/tests/bsc-nat/bsc_nat_test.c b/openbsc/tests/bsc-nat/bsc_nat_test.c
index c5234aa..b7a89c5 100644
--- a/openbsc/tests/bsc-nat/bsc_nat_test.c
+++ b/openbsc/tests/bsc-nat/bsc_nat_test.c
@@ -449,19 +449,19 @@
 		abort();
 	}
 
-	if (con.msc_timeslot != 21) {
+	if (con.msc_endp != 21) {
 		fprintf(stderr, "Timeslot should be 21.\n");
 		abort();
 	}
 
-	if (con.bsc_timeslot != 21) {
+	if (con.bsc_endp != 21) {
 		fprintf(stderr, "Assigned timeslot should have been 21.\n");
 		abort();
 	}
 	talloc_free(parsed);
 
 	bsc_mgcp_dlcx(&con);
-	if (con.bsc_timeslot != -1 || con.msc_timeslot != -1) {
+	if (con.bsc_endp != -1 || con.msc_endp != -1) {
 		fprintf(stderr, "Clearing should remove the mapping.\n");
 		abort();
 	}
@@ -483,8 +483,8 @@
 	llist_add(&con->list_entry, &nat->bsc_connections);
 
 	sccp_con = talloc_zero(con, struct sccp_connections);
-	sccp_con->msc_timeslot = 12;
-	sccp_con->bsc_timeslot = 12;
+	sccp_con->msc_endp = 12;
+	sccp_con->bsc_endp = 12;
 	sccp_con->bsc = con;
 	llist_add(&sccp_con->list_entry, &nat->sccp_connections);
 
@@ -498,13 +498,6 @@
 		abort();
 	}
 
-	sccp_con->msc_timeslot = 0;
-	sccp_con->bsc_timeslot = 0;
-	if (bsc_mgcp_find_con(nat, 1) != sccp_con) {
-		fprintf(stderr, "Didn't find the connection\n");
-		abort();
-	}
-
 	/* free everything */
 	talloc_free(nat);
 }
