diff --git a/compiler2/ttcn3/Statement.cc b/compiler2/ttcn3/Statement.cc
index b0e6c384f37992407d574c708317f012d6d8b4fc..674bb47f159cfc352f977c730f88c49e8681c8e7 100644
--- a/compiler2/ttcn3/Statement.cc
+++ b/compiler2/ttcn3/Statement.cc
@@ -5151,6 +5151,7 @@ error:
         error("Cannot determine system component in `%s' operation with "
           "`param' clause", get_stmt_name());
       }
+      chk_map_params(cref1_is_system ? ptb1 : (cref2_is_system ? ptb2 : NULL));
       return;
     }
     if (cref1_is_tc || cref2_is_system) {
@@ -5220,30 +5221,33 @@ error:
         }
       }
     }
-    
-    if (config_op.parsed_params != NULL) {
-      if (cref1_is_system) {
-        config_op.fp_list = ptb1->get_map_parameters(statementtype == S_MAP);
-      }
-      else if (cref2_is_system) {
-        config_op.fp_list = ptb2->get_map_parameters(statementtype == S_MAP);
-      }
-      else {
-        error("Cannot determine system component in `%s' operation with "
-          "`param' clause", get_stmt_name());
-      }
-      if (config_op.fp_list != NULL) {
-        ActualParList* parlist = new ActualParList;
-        if (config_op.fp_list->fold_named_and_chk(config_op.parsed_params, parlist)) {
-          delete parlist;
-          delete config_op.parsed_params;
-          config_op.ap_list = NULL;
-        } else {
-          delete config_op.parsed_params;
-          parlist->set_fullname(get_fullname());
-          parlist->set_my_scope(my_sb);
-          config_op.ap_list = parlist;
-        }
+
+    chk_map_params(cref1_is_system ? ptb1 : (cref2_is_system ? ptb2 : NULL));
+  }
+
+  void Statement::chk_map_params(PortTypeBody* p_system_port)
+  {
+    if (config_op.parsed_params == NULL) {
+      return;
+    }
+    if (p_system_port != NULL) {
+      config_op.fp_list = p_system_port->get_map_parameters(statementtype == S_MAP);
+    }
+    else {
+      error("Cannot determine system component in `%s' operation with "
+        "`param' clause", get_stmt_name());
+    }
+    if (config_op.fp_list != NULL) {
+      ActualParList* parlist = new ActualParList;
+      if (config_op.fp_list->fold_named_and_chk(config_op.parsed_params, parlist)) {
+        delete parlist;
+        delete config_op.parsed_params;
+        config_op.ap_list = NULL;
+      } else {
+        delete config_op.parsed_params;
+        parlist->set_fullname(get_fullname());
+        parlist->set_my_scope(my_sb);
+        config_op.ap_list = parlist;
       }
     }
   }
diff --git a/compiler2/ttcn3/Statement.hh b/compiler2/ttcn3/Statement.hh
index 65924659630b92d072aa12dbe48c91a218822d01..85bfb18444790f6983b7d94c251defa33b390873 100644
--- a/compiler2/ttcn3/Statement.hh
+++ b/compiler2/ttcn3/Statement.hh
@@ -758,6 +758,7 @@ namespace Ttcn {
     void chk_connect();
     /* checks map and unmap */
     void chk_map();
+    void chk_map_params(PortTypeBody* p_system_port);
     void chk_start_timer();
     void chk_stop_timer();
     void chk_timer_timeout();
diff --git a/regression_test/map_param/common.ttcn b/regression_test/map_param/common.ttcn
index 93ea19ea475a0791073ac973215a0539285bdf93..816bd76fcf5aefc4097ec1e3044b86a2ff6eca3f 100644
--- a/regression_test/map_param/common.ttcn
+++ b/regression_test/map_param/common.ttcn
@@ -86,4 +86,21 @@ function f_test_params_retval(CT p_comp) runs on CT system CT return integer {
   return 0;
 }
 
+function f_test_params_mtc() runs on CT system CT {
+  var IntList v_p2 := P2_INITIAL;
+  map(mtc:pt, system:pt) param (-, v_p2);
+  if (v_p2 != P2_FINAL) {
+    setverdict(fail, "Final value of parameter p2 is incorrect: ", v_p2);
+  }
+  
+  var integer v_p := P_INITIAL;
+  unmap(mtc:pt, system:pt) param(v_p);
+  if (v_p != P_FINAL) {
+    setverdict(fail, "Final value of parameter p is incorrect: ", v_p);
+  }
+  
+  map(mtc:pt, system:pt);
+  unmap(mtc:pt, system:pt);
+}
+
 }
diff --git a/regression_test/map_param/single_mode/single.cfg b/regression_test/map_param/single_mode/single.cfg
index fdadfc13eecd0ece58aa6ec1a5f3fddffa077046..34ad6523fee7faebcf0c3bb932cddc271df4f8c5 100644
--- a/regression_test/map_param/single_mode/single.cfg
+++ b/regression_test/map_param/single_mode/single.cfg
@@ -18,3 +18,4 @@ ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS
 [EXECUTE]
 single_test.tc_single
 single_test.tc_single_retval
+single_test.tc_single_mtc
diff --git a/regression_test/map_param/single_mode/single_test.ttcn b/regression_test/map_param/single_mode/single_test.ttcn
index 2b1d4e18156d298dc876e485e5756eadab9ecb08..5e0be7e1f88eb59e4da0bd829e17278f395a108b 100644
--- a/regression_test/map_param/single_mode/single_test.ttcn
+++ b/regression_test/map_param/single_mode/single_test.ttcn
@@ -25,4 +25,9 @@ testcase tc_single_retval() runs on CT {
   f_check_calls();
 }
 
+testcase tc_single_mtc() runs on CT {
+  f_test_params_mtc();
+  f_check_calls();
+}
+
 }