diff --git a/core/Array.hh b/core/Array.hh
index 1d39b195f8ab77dc299cf9f3d09dceb4020786d3..62fc25c9e84efc172757cbbac5896b71804aa63f 100644
--- a/core/Array.hh
+++ b/core/Array.hh
@@ -1128,11 +1128,11 @@ template <typename T_type, unsigned int array_size, int index_offset>
 boolean VALUE_ARRAY<T_type,array_size,index_offset>::is_bound() const
 {
   for (unsigned int i = 0; i < array_size; ++i) {
-    if (!array_elements[i].is_bound()) {
-    	return FALSE;
+    if (array_elements[i].is_bound()) {
+    	return TRUE;
     }
   }
-  return TRUE;
+  return FALSE;
 }
 
 template <typename T_type, unsigned int array_size, int index_offset>
diff --git a/regression_test/arrayOper/TarrayOper.ttcn b/regression_test/arrayOper/TarrayOper.ttcn
index f5fb7d71a70f65f0386897d6d55d2af9049f79c2..c7b8fddd195e0df30ef0b2006ec198183aa810bc 100644
--- a/regression_test/arrayOper/TarrayOper.ttcn
+++ b/regression_test/arrayOper/TarrayOper.ttcn
@@ -392,9 +392,8 @@ if (not(ischosen(x1[1].x1))) {setverdict(pass);}
      else {setverdict(fail);}
 if (x2[2].x2==1.4) {setverdict(pass);}		//out of order
      else {setverdict(fail);}
-/* Temporarily disabled: Bug 521245 */ 
-/*if (ischosen(x2[2].x2)) {setverdict(pass);}
-     else {setverdict(fail);}*/
+if (ischosen(x2[2].x2)) {setverdict(pass);}
+     else {setverdict(fail);}
 if (not(ischosen(x2[2].x1))) {setverdict(pass);}
      else {setverdict(fail);}
 }
diff --git a/regression_test/text2ttcn/array_test.ttcn b/regression_test/text2ttcn/array_test.ttcn
index 6635ae4414a3faec78f6fbbd351862f520f4c190..537884f3911d16c0d108c04afebd8ffec59ffa33 100644
--- a/regression_test/text2ttcn/array_test.ttcn
+++ b/regression_test/text2ttcn/array_test.ttcn
@@ -197,7 +197,7 @@ function f_string2ttcn_REC_BAI3_v_str(in charstring pl_cs, charstring pl_expecte
       log("str2ttcn() failed: ",err_str);
       setverdict(fail);
     }
-    if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) }
+    if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail, match(pl_expected_result, log2str(vl_result))) }
   } 
   else 
   {
@@ -744,7 +744,7 @@ testcase tc_array_string2ttcn_i3_mod4v1() runs on MC {
   f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <uninitialized template>, <uninitialized template> } }")
   //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", log2str(vl_rec),true)
   // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493)
-  f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := <unbound> }" , true);
+  f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <unbound>, <unbound> } }" , true);
   log(tl_rec);
   log(vl_rec);
 }
@@ -755,7 +755,7 @@ testcase tc_array_string2ttcn_i3_mod4v2() runs on MC {
   f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <uninitialized template> } }")
   //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", log2str(vl_rec), true);
   // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493)
-  f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := <unbound> }" , true);
+  f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <unbound> } }" , true);
   log(tl_rec);
   log(vl_rec);
 }