diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn
index c4cad38..75c51e1 100644
--- a/asterisk/Asterisk_Tests.ttcn
+++ b/asterisk/Asterisk_Tests.ttcn
@@ -225,11 +225,13 @@
 		return;
 	}
 
-	as_SIP_mt_call_accept();
+	as_SIP_mt_call_accept(exp_update_to_direct_rtp := g_pars.cp.exp_update_to_direct_rtp);
 	COORD.send(COORD_CMD_CALL_ESTABLISHED);
 
-	/* Once MO hangs up, Asterisk updates us to point RTP to it: */
-	as_SIP_exp_call_update(g_pars.cp.sip_seq_nr + 1);
+	if (g_pars.cp.exp_update_to_direct_rtp) {
+		/* Once MO hangs up, Asterisk updates us to point RTP to it: */
+		as_SIP_exp_call_update(g_pars.cp.sip_seq_nr + 1);
+	}
 	as_SIP_exp_call_hangup(g_pars.cp.sip_seq_nr + 1);
 
 	setverdict(pass);
@@ -491,6 +493,74 @@
 	f_shutdown();
 }
 
+/* Test SIP registration of local clients */
+private function f_TC_ims_call_mt(charstring id) runs on IMS_ConnHdlr {
+	f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr)));
+	as_IMS_register();
+	COORD.send(IMS_COORD_CMD_REGISTERED);
+	setverdict(pass);
+
+	COORD.receive(IMS_COORD_CMD_START);
+	f_IMS_mt_call_setup();
+	setverdict(pass);
+	COORD.send(IMS_COORD_CMD_CALL_ESTABLISHED);
+
+	COORD.receive(IMS_COORD_CMD_HANGUP);
+	f_IMS_do_call_hangup();
+	setverdict(pass);
+
+	as_IMS_unregister();
+}
+testcase TC_ims_call_mt() runs on test_CT {
+	var SIPConnHdlrPars sip_pars;
+	var IMS_ConnHdlrPars ims_pars;
+	var SIPConnHdlr vc_conn_sip;
+	var IMS_ConnHdlr vc_conn_ims;
+	const charstring c_ext_msisdn := "90829";
+
+	f_init();
+
+	sip_pars := f_init_ConnHdlrPars(idx := 1);
+	ims_pars := f_init_IMS_ConnHdlrPars();
+
+	sip_pars.cp.exp_update_to_direct_rtp := false;
+	sip_pars.cp.calling := valueof(ts_SipAddr(ts_HostPort(sip_pars.remote_sip_host),
+						 ts_UserInfo(c_ext_msisdn)));
+	sip_pars.cp.called := sip_pars.local_sip_record;
+	ims_pars.subscr.cp.calling := valueof(ts_SipAddr(ts_HostPort(ims_pars.realm),
+							ts_UserInfo(c_ext_msisdn)));
+	ims_pars.subscr.cp.called := valueof(ts_SipAddr(ts_HostPort(ims_pars.realm),
+							 ts_UserInfo(ims_pars.subscr.msisdn)));
+
+	vc_conn_ims := f_start_handler_IMS(refers(f_TC_ims_call_mt), ims_pars);
+	vc_conn_sip := f_start_handler(refers(f_TC_internal_call_mt), sip_pars);
+
+	COORD.receive(COORD_CMD_REGISTERED) from vc_conn_sip;
+
+	f_AMI_IMS_register(ims_pars);
+	IMS_COORD.receive(IMS_COORD_CMD_REGISTERED) from vc_conn_ims;
+
+	IMS_COORD.send(IMS_COORD_CMD_START) to vc_conn_ims;
+	IMS_COORD.receive(IMS_COORD_CMD_CALL_ESTABLISHED) from vc_conn_ims;
+	COORD.receive(COORD_CMD_CALL_ESTABLISHED) from vc_conn_sip;
+
+	/* TODO: "Action: DedicatedBearerStatus" */
+
+	/* Call on-going */
+	f_sleep(1.0);
+
+	IMS_COORD.send(IMS_COORD_CMD_HANGUP) to vc_conn_ims;
+
+	/* Trigger unregistration: */
+	f_sleep(1.0);
+	AMI_CLIENT.clear;
+	f_AMI_IMS_unregister(ims_pars);
+
+	vc_conn_sip.done;
+	vc_conn_ims.done;
+	f_shutdown();
+}
+
 control {
 	execute( TC_internal_registration() );
 	execute( TC_internal_call_momt() );
@@ -499,6 +569,7 @@
 	execute( TC_internal_call_all_4registered() );
 	execute( TC_ims_registration() );
 	execute( TC_ims_call_mo() );
+	execute( TC_ims_call_mt() );
 }
 
 }
