diff --git a/src/DataSource/EPTF_CLL_DataSourceClient_Functions.ttcn b/src/DataSource/EPTF_CLL_DataSourceClient_Functions.ttcn
index 6dddecf..4ee9aa6 100644
--- a/src/DataSource/EPTF_CLL_DataSourceClient_Functions.ttcn
+++ b/src/DataSource/EPTF_CLL_DataSourceClient_Functions.ttcn
@@ -1915,7 +1915,7 @@
     );
   }
 
-  if (vl_dataValueResponse.errorCode != 0) {
+  if (vl_dataValueResponse.errorCode < 0) {
     // try to find getData handler:
     if (f_EPTF_str2int_HashMap_Find(v_EPTF_DataSourceClient_dataHandlerHash,vl_handlerIdStr,vl_handlerId)) {
       // calling handler: v_fcb_EPTF_DataSourceClient_dataHandler_List[vl_handlerId]
diff --git a/src/DataSource/EPTF_CLL_DataSource_Definitions.ttcn b/src/DataSource/EPTF_CLL_DataSource_Definitions.ttcn
index 1b33eca..c06bcc3 100644
--- a/src/DataSource/EPTF_CLL_DataSource_Definitions.ttcn
+++ b/src/DataSource/EPTF_CLL_DataSource_Definitions.ttcn
@@ -1641,9 +1641,13 @@
 //      For elementary type values this argument is not used
 //
 //  Return Value:
-//    integer - error code (0 of OK, non zero if unsuccessful:
+//    integer - error code (0 if OK, non zero if unsuccessful:
 //     e.g. invalid parameters given in pl_params, or data is read-only.
-//     If error code is not zero pl_dataValue can be used to provide textual error message)
+//     For negative error codes the getDataHandlers registered by <f_EPTF_DataSourceClient_registerData>
+//     are also called to get the EPTF Variable name to process the request, since the value of any data source
+//     that have getDataHandler might also be set (if the corresponding variable can be adjusted with the value to be set)
+//     For positive error codes, the getDataHandlers are not called for the same request.
+//     If error code is positive pl_dataValue can be used to provide textual error message)
 //
 //  Detailed Comments:
 //    This function is called when <f_EPTF_DataSource_setDataValue> is requested
diff --git a/src/DsRestAPI/EPTF_CLL_DsRestAPI_Timeline_Functions.ttcn b/src/DsRestAPI/EPTF_CLL_DsRestAPI_Timeline_Functions.ttcn
index 0d7598b..9d5e83f 100644
--- a/src/DsRestAPI/EPTF_CLL_DsRestAPI_Timeline_Functions.ttcn
+++ b/src/DsRestAPI/EPTF_CLL_DsRestAPI_Timeline_Functions.ttcn
@@ -204,7 +204,7 @@
           vl_errorCode := f_EPTF_DsRestAPI_Timeline_AppendFromFile(pl_dataValue.charstringVal, pl_dataValue);
         } else {
           pl_dataValue := {charstringVal := "Charstring value expected"};
-          vl_errorCode := -5;
+          vl_errorCode := 5;
         }
       }
       case (c_DsRestAPI_Timeline_dataElementAppendFromJSON) {
@@ -212,7 +212,7 @@
           vl_errorCode := f_EPTF_DsRestAPI_Timeline_AppendFromJson(char2oct(pl_params[0].paramValue), pl_dataValue);
         } else {
           pl_dataValue := {charstringVal := "Charstring value expected"};
-          vl_errorCode := -5;
+          vl_errorCode := 5;
         }
       }
       case (c_DsRestAPI_Timeline_dataElementClear) {
@@ -235,7 +235,7 @@
           vl_errorCode := 0;
         } else {
           pl_dataValue := {charstringVal := "Boolean value expected"};
-          vl_errorCode := -5;
+          vl_errorCode := 5;
         }
       }
       case else {}
@@ -695,4 +695,4 @@
     
     return true;
   }
-}
\ No newline at end of file
+}
diff --git a/test/DataSource/EPTF_DataSource_Test_Functions.ttcn b/test/DataSource/EPTF_DataSource_Test_Functions.ttcn
index c8e2e18..19270a6 100644
--- a/test/DataSource/EPTF_DataSource_Test_Functions.ttcn
+++ b/test/DataSource/EPTF_DataSource_Test_Functions.ttcn
@@ -369,18 +369,18 @@
             (    pl_dataElement != c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName_Value 
              and pl_dataElement != c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName
              and pl_dataElement != c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName_List)) {
-        return 1; //incorrect param
+        return -1; //incorrect param
       }
       
       if (pl_dataElement == c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName_Value or pl_dataElement == c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName) {
         if (not ischosen(pl_dataValue.intVal)) {
-          return 2; //incorrect value        
+          return -2; //incorrect value        
         }
       }
       
       if (pl_dataElement == c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName_List) {
         if (not ischosen(pl_dataValue.integerlistVal)) {
-          return 2; //incorrect value        
+          return -2; //incorrect value        
         }
       }
         
@@ -392,7 +392,7 @@
       
       if (pl_dataElement == c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName or pl_dataElement == c_EPTF_CLL_DataSourceClient_Test_DSOwnerElementName_List)  {
         if (pl_result[0] == "") {  
-          return 1; //incorrect param
+          return -1; //incorrect param
         }
       }
       
@@ -1166,15 +1166,19 @@
   ) runs on EPTF_DataSourceClient_CT return integer {
     if (not match(pl_dataElement,pattern "value*")) {
       pl_dataValue := {charstringVal := log2str(%definitionId&": Custom warning: Wrong element name for DataSource "&pl_dataSource&": ",pl_dataElement)};
-      return 2; // invalid element name
+      return -2; // invalid element name
     }
     if (sizeof(pl_params)!=3) {
       pl_dataValue := {charstringVal := log2str(%definitionId&": Custom warning: Wrong number of params for Element "&pl_dataElement)};
-      return 1; // invalid number of params
+      return -1; // invalid number of params
     }
     if (pl_params[0].paramName == "read-only") {
       pl_dataValue := {charstringVal := log2str(%definitionId&": Custom warning: Data is read-only for ",pl_dataElement, " params: ", pl_params)};
-      return 2; // read-only value
+      return -2; // read-only value
+    }
+    if (pl_params[0].paramName == "read-only-2") {
+      pl_dataValue := {charstringVal := log2str(%definitionId&": Custom warning: Data is read-only for ",pl_dataElement, " params: ", pl_params)};
+      return 2; // read-only value, getData handler is not called
     }
     // store value in pl_dataValue:
     //.... do nothing, (it is not stored)
@@ -2895,6 +2899,35 @@
       f_EPTF_Base_stopAll(none);
     }
 
+    // check read-only:
+    vl_dataValue := {charstringlistVal :={"a","b"}};
+    vl_errorCode := f_EPTF_DataSource_setDataValue(
+      pl_dataValue := vl_dataValue,
+      pl_source := "DummySource",
+      pl_ptcName := pl_ptcName,
+      pl_element := "value_element-2",
+      pl_params := {
+        {
+          paramName := "read-only-2",
+          paramValue := "v21"
+        },
+        {
+          paramName := "P21",
+          paramValue := "v22"
+        },
+        {
+          paramName := "P21",
+          paramValue := "v23"
+        }
+      }
+    );
+
+    // data should be read-only
+    if (vl_errorCode!=2) {
+      setverdict(fail,"Wrong error code for DataSource, it should be read-only: 'value_element-2'");
+      f_EPTF_Base_stopAll(none);
+    }
+
     //check nonexistent source:
     vl_dataValue := {charstringlistVal :={"a","b"}};
     vl_errorCode := f_EPTF_DataSource_setDataValue(
