diff --git a/tests/executables_src/testCircularDependencyFaultyFlags.cc b/tests/executables_src/testCircularDependencyFaultyFlags.cc
index 0a816d7ed5f7e1a426966e71f3a671739133329e..a2bdff922c9a1f48fb53e7457aadcb1bb2f60eaa 100644
--- a/tests/executables_src/testCircularDependencyFaultyFlags.cc
+++ b/tests/executables_src/testCircularDependencyFaultyFlags.cc
@@ -231,10 +231,19 @@ BOOST_FIXTURE_TEST_CASE(OneInvalidVariable, CircularAppTestFixcture<TestApplicat
   a.write();
   C_trigger.write();
   test.stepApplication();
+
   readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::faulty);
+
+  // getting a valid variable in the same module does not resolve the flag
+  b.write();
+  C_trigger.write();
+  test.stepApplication();
 
+  readAllLatest();
   checkAllDataValidity(ctk::DataValidity::faulty);
 
+  // now resolve the faulty condition
   a.setDataValidity(ctk::DataValidity::ok);
   a.write();
   test.stepApplication();
@@ -262,3 +271,86 @@ BOOST_FIXTURE_TEST_CASE(OneInvalidVariable, CircularAppTestFixcture<TestApplicat
 
   checkAllDataValidity(ctk::DataValidity::ok);
 }
+
+BOOST_FIXTURE_TEST_CASE(TwoFaultyInOneModule, CircularAppTestFixcture<TestApplication1>) {
+  a.setDataValidity(ctk::DataValidity::faulty);
+  a.write();
+  C_trigger.write();
+  test.stepApplication();
+  // new in this test: an additional variable comes in while the internal and other external inputs are invalid
+  b.setDataValidity(ctk::DataValidity::faulty);
+  b.write();
+  C_trigger.write();
+  test.stepApplication();
+
+  // just a cross check
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::faulty);
+
+  a.setDataValidity(ctk::DataValidity::ok);
+  a.write();
+  C_trigger.write();
+  test.stepApplication();
+
+  // everything still faulty as b is faulty
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::faulty);
+
+  b.setDataValidity(ctk::DataValidity::ok);
+  b.write();
+  C_trigger.write();
+  test.stepApplication();
+
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::ok);
+}
+
+BOOST_FIXTURE_TEST_CASE(TwoFaultyInTwoModules, CircularAppTestFixcture<TestApplication1>) {
+  a.setDataValidity(ctk::DataValidity::faulty);
+  a.write();
+  C_trigger.write();
+  test.stepApplication();
+  // new in this test: the trigger in C bring an additional invalidity flag.
+  a.write();
+  C_trigger.setDataValidity(ctk::DataValidity::faulty);
+  C_trigger.write();
+  test.stepApplication();
+
+  // just a cross check
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::faulty);
+
+  a.setDataValidity(ctk::DataValidity::ok);
+  a.write();
+  C_trigger.write();
+  test.stepApplication();
+
+  // everything still faulty as b is faulty
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::faulty);
+
+  a.write();
+  C_trigger.setDataValidity(ctk::DataValidity::ok);
+  C_trigger.write();
+  test.stepApplication();
+
+  readAllLatest();
+  // the first half of the circle is not OK yet because no external triggers have arrived at A since
+  // the faultly condition was resolved
+  BOOST_CHECK(A_out1.dataValidity() == ctk::DataValidity::faulty);
+  BOOST_CHECK(B_out1.dataValidity() == ctk::DataValidity::faulty);
+  BOOST_CHECK(B_in2.dataValidity() == ctk::DataValidity::faulty);
+  BOOST_CHECK(C_in2.dataValidity() == ctk::DataValidity::faulty);
+  // the outputs of C, D and the circularResult have not been written yet
+  BOOST_CHECK(C_out1.dataValidity() == ctk::DataValidity::ok);
+  BOOST_CHECK(D_out1.dataValidity() == ctk::DataValidity::ok);
+  BOOST_CHECK(A_in2.dataValidity() == ctk::DataValidity::ok);
+  BOOST_CHECK(D_in2.dataValidity() == ctk::DataValidity::ok);
+  BOOST_CHECK(circleResult.dataValidity() == ctk::DataValidity::ok);
+
+  // writing a  resolves the remainging variables
+  a.write();
+  test.stepApplication();
+  readAllLatest();
+  checkAllDataValidity(ctk::DataValidity::ok);
+}