diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 1b02efe..c4ecf1c 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -457,7 +457,7 @@
 	struct gsm_bts *bts = conn->bts;
 	struct msgb *msg;
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.reject);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
 
 	msg = gsm48_create_loc_upd_rej(cause);
 	if (!msg) {
@@ -506,7 +506,7 @@
 
 	DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.accept);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
 
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
@@ -637,13 +637,13 @@
 
 	switch (lu->type) {
 	case GSM48_LUPD_NORMAL:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.normal);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
 		break;
 	case GSM48_LUPD_IMSI_ATT:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.attach);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
 		break;
 	case GSM48_LUPD_PERIODIC:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.periodic);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
 		break;
 	}
 
@@ -1063,7 +1063,7 @@
 	DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s",
 		gsm48_mi_type_name(mi_type), mi_string);
 
-	osmo_counter_inc(bts->network->stats.loc_upd_type.detach);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
 
 	switch (mi_type) {
 	case GSM_MI_TYPE_TMSI:
@@ -2002,7 +2002,7 @@
 	     subscr_name(trans->subscr), trans->subscr->extension,
 	     setup.called.number);
 
-	osmo_counter_inc(trans->net->stats.call.mo_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP]);
 
 	/* indicate setup to MNCC */
 	mncc_recvmsg(trans->net, trans, MNCC_SETUP_IND, &setup);
@@ -2080,7 +2080,7 @@
 	
 	new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
 
-	osmo_counter_inc(trans->net->stats.call.mt_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP]);
 
 	return gsm48_conn_sendmsg(msg, trans->conn, trans);
 }
@@ -2306,7 +2306,7 @@
 	}
 
 	new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
-	osmo_counter_inc(trans->net->stats.call.mt_connect);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT]);
 
 	return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect);
 }
@@ -2319,7 +2319,7 @@
 	gsm48_stop_cc_timer(trans);
 
 	new_cc_state(trans, GSM_CSTATE_ACTIVE);
-	osmo_counter_inc(trans->net->stats.call.mo_connect_ack);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
 	
 	memset(&connect_ack, 0, sizeof(struct gsm_mncc));
 	connect_ack.callref = trans->callref;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 20d18a9..fba5208 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -315,14 +315,14 @@
 		rc = smpp_try_deliver(gsms, conn);
 		if (rc == 1) {
 			rc = 1; /* cause 1: unknown subscriber */
-			osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+			rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 		} else if (rc < 0) {
 			rc = 21; /* cause 21: short message transfer rejected */
 			/* FIXME: handle the error somehow? */
 		}
 #else
 		rc = 1; /* cause 1: unknown subscriber */
-		osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+		rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
 		return rc;
 	}
@@ -363,7 +363,7 @@
 	uint8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
 	int rc = 0;
 
-	osmo_counter_inc(conn->bts->network->stats.sms.submitted);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED]);
 
 	gsms = sms_alloc();
 	if (!gsms)
@@ -633,10 +633,10 @@
 		 * to store this in our database and wait for a SMMA message */
 		/* FIXME */
 		send_signal(S_SMS_MEM_EXCEEDED, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_mem);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM]);
 	} else {
 		send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_other);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER]);
 	}
 
 	sms_free(sms);
@@ -932,7 +932,7 @@
 
 	DEBUGP(DLSMS, "TX: SMS DELIVER\n");
 
-	osmo_counter_inc(conn->bts->network->stats.sms.delivered);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_DELIVERED]);
 	db_sms_inc_deliver_attempts(trans->sms.sms);
 
 	return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index 74da1d7..d1041b3 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -795,34 +795,42 @@
 
 	openbsc_vty_print_statistics(vty, net);
 	vty_out(vty, "Location Update         : %lu attach, %lu normal, %lu periodic%s",
-		osmo_counter_get(net->stats.loc_upd_type.attach),
-		osmo_counter_get(net->stats.loc_upd_type.normal),
-		osmo_counter_get(net->stats.loc_upd_type.periodic), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
+		VTY_NEWLINE);
 	vty_out(vty, "IMSI Detach Indications : %lu%s",
-		osmo_counter_get(net->stats.loc_upd_type.detach), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Location Update Response: %lu accept, %lu reject%s",
-		osmo_counter_get(net->stats.loc_upd_resp.accept),
-		osmo_counter_get(net->stats.loc_upd_resp.reject), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Handover                : %lu attempted, %lu no_channel, %lu timeout, "
 		"%lu completed, %lu failed%s",
-		osmo_counter_get(net->stats.handover.attempted),
-		osmo_counter_get(net->stats.handover.no_channel),
-		osmo_counter_get(net->stats.handover.timeout),
-		osmo_counter_get(net->stats.handover.completed),
-		osmo_counter_get(net->stats.handover.failed), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MO                  : %lu submitted, %lu no receiver%s",
-		osmo_counter_get(net->stats.sms.submitted),
-		osmo_counter_get(net->stats.sms.no_receiver), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MT                  : %lu delivered, %lu no memory, %lu other error%s",
-		osmo_counter_get(net->stats.sms.delivered),
-		osmo_counter_get(net->stats.sms.rp_err_mem),
-		osmo_counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_DELIVERED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MO Calls                : %lu setup, %lu connect ack%s",
-		osmo_counter_get(net->stats.call.mo_setup),
-		osmo_counter_get(net->stats.call.mo_connect_ack), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MT Calls                : %lu setup, %lu connect%s",
-		osmo_counter_get(net->stats.call.mt_setup),
-		osmo_counter_get(net->stats.call.mt_connect), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
+		VTY_NEWLINE);
 	return CMD_SUCCESS;
 }
 
