diff --git a/modules/io/src/mol/star_parser.cc b/modules/io/src/mol/star_parser.cc
index 33e235d0930a69aa038ed8dbf4e96c2e261ab4a0..b6f370d8e2321e68cd94a57d4ccb795a96895b53 100644
--- a/modules/io/src/mol/star_parser.cc
+++ b/modules/io/src/mol/star_parser.cc
@@ -247,7 +247,9 @@ void StarParser::ParseLoop()
           this->ParseMultilineValue(s, true);
         }
         break;
-        case 'd':
+      case '_':
+        return;
+      case 'd':
           if (tline.length()>=5 && StringRef("data_", 5)==tline.substr(0, 5)) {
             return;
           }
@@ -255,8 +257,6 @@ void StarParser::ParseLoop()
         if (StringRef("loop_", 5)==tline) {
           return;
         }
-      case '_':
-        return;
       default:
         if (process_rows) {
           int before=columns.size();
diff --git a/modules/io/tests/test_star_parser.cc b/modules/io/tests/test_star_parser.cc
index 871740c045ceb87f8374f4fc71db73271187d976..e72edb632d81900330f36beec23b835ed179396c 100644
--- a/modules/io/tests/test_star_parser.cc
+++ b/modules/io/tests/test_star_parser.cc
@@ -284,10 +284,11 @@ BOOST_AUTO_TEST_CASE(star_multi)
   
 BOOST_AUTO_TEST_CASE(star_loop)
 {
+  BOOST_MESSAGE("  Running star_loop tests...");
   std::ifstream s("testfiles/loop.cif");
   LoopTestParser star_p(s);
   star_p.Parse();
-  BOOST_CHECK_EQUAL(star_p.lines[0][0], "1");
+  BOOST_CHECK_EQUAL(star_p.lines[0][0], "d");
   BOOST_CHECK_EQUAL(star_p.lines[0][1], "2");
   BOOST_CHECK_EQUAL(star_p.lines[0][2], "3");
   
@@ -306,12 +307,15 @@ BOOST_AUTO_TEST_CASE(star_loop)
   BOOST_CHECK_EQUAL(star_p.lines[4][0], "13");
   BOOST_CHECK_EQUAL(star_p.lines[4][1], "14");
   BOOST_CHECK_EQUAL(star_p.lines[4][2], "15");
+  BOOST_MESSAGE("  done.");
 }
 
 BOOST_AUTO_TEST_CASE(star_items_as_row)
 {
+  BOOST_MESSAGE("  Running star_items_as_row tests...");
   std::ifstream s("testfiles/items-as-row.cif");
   ItemsAsRowTestParser star_p(s);
+  BOOST_MESSAGE("          checking parsing abilities...");
   star_p.Parse();
   BOOST_CHECK_EQUAL(star_p.s1, "a");
   BOOST_CHECK_EQUAL(star_p.s2, "a b c");
@@ -330,6 +334,8 @@ BOOST_AUTO_TEST_CASE(star_items_as_row)
   BOOST_CHECK_EQUAL(star_p.s6, "1.22");
   BOOST_CHECK_EQUAL(star_p.s7, "1.33");
   BOOST_CHECK_EQUAL(star_p.s8, "1.44");
+  BOOST_MESSAGE("          done.");
+  BOOST_MESSAGE("  done.");
 }
 
 BOOST_AUTO_TEST_CASE(star_missing_data)
diff --git a/modules/io/tests/testfiles/loop.cif b/modules/io/tests/testfiles/loop.cif
index b7c069da4248c2697fec9469813d1c945f0d3b2e..4846d28eee429c098a53a8b046507d5437e2963b 100644
--- a/modules/io/tests/testfiles/loop.cif
+++ b/modules/io/tests/testfiles/loop.cif
@@ -4,7 +4,8 @@ loop_
 _loop.s1
 _loop.s2
 _loop.s3
-1 2 3
+# the 'd' is needed to test for BZDNG-298
+d 2 3
 '4 x' 5 6
 7 8
 ;
@@ -17,4 +18,4 @@ _loop.s3
 13 
 ;14
 ; 
-15
\ No newline at end of file
+15