diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 61fbc26..438ee08 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -172,8 +172,6 @@
 	 */
 	struct llist_head trans_list;
 
-	unsigned int paging_response_timer;
-
 	/* Radio Resource Location Protocol (TS 04.31) */
 	struct {
 		enum rrlp_mode mode;
diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c
index 774c767..9e3e8b3 100644
--- a/src/libmsc/msc_net_init.c
+++ b/src/libmsc/msc_net_init.c
@@ -72,8 +72,6 @@
 	net->mncc_guard_timeout = 180;
 	net->ncss_guard_timeout = 30;
 
-	net->paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
-
 	INIT_LLIST_HEAD(&net->trans_list);
 	INIT_LLIST_HEAD(&net->upqueue);
 	INIT_LLIST_HEAD(&net->neighbor_ident_list);
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index 46d3cf9..79b4daa 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -67,6 +67,7 @@
 #include <osmocom/msc/sgs_vty.h>
 #include <osmocom/msc/sccp_ran.h>
 #include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/ran_infra.h>
 
 static struct gsm_network *gsmnet = NULL;
 
@@ -562,7 +563,7 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_msc_paging_response_timer, cfg_msc_paging_response_timer_cmd,
+DEFUN_DEPRECATED(cfg_msc_paging_response_timer, cfg_msc_paging_response_timer_cmd,
       "paging response-timer (default|<1-65535>)",
       "Configure Paging\n"
       "Set Paging timeout, the minimum time to pass between (unsuccessful) Pagings sent towards"
@@ -570,10 +571,22 @@
       "Set to default timeout (" OSMO_STRINGIFY_VAL(MSC_PAGING_RESPONSE_TIMER_DEFAULT) " seconds)\n"
       "Set paging timeout in seconds\n")
 {
+	int rat;
+	int paging_response_timer;
 	if (!strcmp(argv[0], "default"))
-		gsmnet->paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
+		paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
 	else
-		gsmnet->paging_response_timer = atoi(argv[0]);
+		paging_response_timer = atoi(argv[0]);
+
+	for (rat = 0; rat < OSMO_RAT_COUNT; rat++) {
+		osmo_tdef_set(msc_ran_infra[rat].tdefs, -4, paging_response_timer, OSMO_TDEF_S);
+	}
+
+	vty_out(vty, "%% paging response-timer is deprecated.%s"
+		"%% All ran timer has been modified.%s"
+		"%% use 'timer <geran|utran|sgs> X4 %s' instead%s",
+		VTY_NEWLINE, VTY_NEWLINE, argv[0], VTY_NEWLINE);
+
 	return CMD_SUCCESS;
 }
 
@@ -773,9 +786,6 @@
 			vty_out(vty, " check-imei-rqd 1%s", VTY_NEWLINE);
 	}
 
-	if (gsmnet->paging_response_timer != MSC_PAGING_RESPONSE_TIMER_DEFAULT)
-		vty_out(vty, " paging response-timer %u%s", gsmnet->paging_response_timer, VTY_NEWLINE);
-
 	if (gsmnet->emergency.route_to_msisdn) {
 		vty_out(vty, " emergency-call route-to-msisdn %s%s",
 			gsmnet->emergency.route_to_msisdn, VTY_NEWLINE);
diff --git a/src/libmsc/paging.c b/src/libmsc/paging.c
index b288414..8fbe810 100644
--- a/src/libmsc/paging.c
+++ b/src/libmsc/paging.c
@@ -84,7 +84,7 @@
 {
 	int rc;
 	struct paging_request *pr;
-	struct gsm_network *net = vsub->vlr->user_ctx;
+	int paging_response_timer;
 
 	pr = talloc(vsub, struct paging_request);
 	OSMO_ASSERT(pr);
@@ -110,8 +110,9 @@
 		/* reduced on the first paging callback */
 		vlr_subscr_get(vsub, VSUB_USE_PAGING);
 		vsub->cs.is_paging = true;
+		paging_response_timer = osmo_tdef_get(msc_ran_infra[vsub->cs.attached_via_ran].tdefs, -4, OSMO_TDEF_S, 10);
 		osmo_timer_setup(&vsub->cs.paging_response_timer, paging_response_timer_cb, vsub);
-		osmo_timer_schedule(&vsub->cs.paging_response_timer, net->paging_response_timer, 0);
+		osmo_timer_schedule(&vsub->cs.paging_response_timer, paging_response_timer, 0);
 	}
 
 	llist_add_tail(&pr->entry, &vsub->cs.requests);
diff --git a/src/libmsc/ran_infra.c b/src/libmsc/ran_infra.c
index af40541..c0eaa1a 100644
--- a/src/libmsc/ran_infra.c
+++ b/src/libmsc/ran_infra.c
@@ -43,6 +43,7 @@
 	{ .T = -1, .default_val = 5, .desc = "RAN connection Complete Layer 3, Authentication and Ciphering timeout" }, \
 	{ .T = -2, .default_val = 30, .desc = "RAN connection release sanity timeout" }, \
 	{ .T = -3, .default_val = 10, .desc = "Timeout to find a target BSS after Handover Required" }, \
+	{ .T = -4, .default_val = 10, .desc = "Paging response timeout" }, \
 
 struct osmo_tdef msc_tdefs_geran[] = {
 	RAN_TDEFS
@@ -55,6 +56,7 @@
 };
 
 struct osmo_tdef msc_tdefs_sgs[] = {
+	{ .T = -4, .default_val = 10, .desc = "Paging response timeout" },
 	{}
 };
 
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index 7337cd9..f956a12 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -58,7 +58,6 @@
   check-imei-rqd (0|1|early)
   cs7-instance-a <0-15>
   cs7-instance-iu <0-15>
-  paging response-timer (default|<1-65535>)
   emergency-call route-to-msisdn MSISDN
   sms-over-gsup
   no sms-over-gsup
