diff --git a/modules/io/src/mol/star_parser.cc b/modules/io/src/mol/star_parser.cc
index 45d34907195f6cc825f093061863365c48a0fe6c..049b026a2f7826f9a4c49b4224942314bfc82045 100644
--- a/modules/io/src/mol/star_parser.cc
+++ b/modules/io/src/mol/star_parser.cc
@@ -171,6 +171,8 @@ void StarParser::ParseLoop()
         if (StringRef("loop_", 5)==tline) {
           return;
         }
+      case '_':
+        return;
       default:
         if (process_rows) {
           int before=columns.size();
@@ -270,7 +272,7 @@ void StarParser::ParseData()
     if (tline.empty()) {
       this->ConsumeLine();
       continue;
-    }    
+    }
     switch (tline[0]) {
       case '_':
         if (skip) {
diff --git a/modules/io/tests/test_star_parser.cc b/modules/io/tests/test_star_parser.cc
index 6a19967759c13165e55459216a7018e025a22470..0b31e3dd829ddcdd3298731ecaa6b4b1215b4a2f 100644
--- a/modules/io/tests/test_star_parser.cc
+++ b/modules/io/tests/test_star_parser.cc
@@ -134,9 +134,10 @@ BOOST_AUTO_TEST_CASE(star_split3)
   BOOST_REQUIRE(parts.size()==1);
   BOOST_CHECK_EQUAL(parts[0], StringRef("1 2", 3));
 }
-    
+
 BOOST_AUTO_TEST_CASE(star_data_item)
 {
+  BOOST_MESSAGE("  Running star_data_item tests...");
   std::ifstream s("testfiles/data-item.cif");
   DataItemTestParser star_p(s);
   star_p.Parse();
diff --git a/modules/io/tests/testfiles/data-item.cif b/modules/io/tests/testfiles/data-item.cif
index 11933c37f98cdaf1d1dcad894d7769707f33ce35..2753f4d0d1089dd25584167f2cab1bae7e541640 100644
--- a/modules/io/tests/testfiles/data-item.cif
+++ b/modules/io/tests/testfiles/data-item.cif
@@ -1,4 +1,11 @@
 data_data-item
+# this file covers BZDNG-282
+loop_
+_loop.s1
+_loop.s2
+_loop.s3
+_loop.s4
+1 2 3 4
 
 _data-item.s1 a
 _data-item.s2 'a b c'