diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc
index a4c9ca313f3dcdeb5f1434884cb57c00d72ab9df..b6d90fc756685626909edc2e6d6209ce07a557fd 100644
--- a/modules/io/src/mol/mmcif_reader.cc
+++ b/modules/io/src/mol/mmcif_reader.cc
@@ -805,7 +805,7 @@ void MMCifReader::ParseCitation(const std::vector<StringRef>& columns)
     }
   }
   if (indices_[YEAR] != -1) {
-    if (columns[indices_[YEAR]][0]!='?') {
+    if (!is_undef(columns[indices_[YEAR]])) {
       cit.SetYear(this->TryGetInt(columns[indices_[YEAR]], "citation.year"));
     }
   }
diff --git a/modules/io/tests/test_mmcif_reader.cc b/modules/io/tests/test_mmcif_reader.cc
index 6f6866622c49c5a6e2f0259339e3c6b5508f4024..3a1906df9ea7c8f7ffc0dae6f79fcc9a54b7972e 100644
--- a/modules/io/tests/test_mmcif_reader.cc
+++ b/modules/io/tests/test_mmcif_reader.cc
@@ -584,16 +584,20 @@ BOOST_AUTO_TEST_CASE(mmcif_citation_tests)
 
   tmmcif_h.SetCategory(StringRef("citation", 8));
   tmmcif_h.Add(StringRef("id", 2));
+  tmmcif_h.Add(StringRef("year", 4));
   tmmcif_h.Add(StringRef("book_title", 10));
   tmmcif_h.Add(StringRef("journal_abbrev", 14));
   tmmcif_p.OnBeginLoop(tmmcif_h);
 
   columns.push_back(StringRef("Foo", 3));
+  columns.push_back(StringRef("1979", 4));
   columns.push_back(StringRef("The Guide", 9));
   columns.push_back(StringRef(".", 1));
 
   BOOST_CHECK_NO_THROW(tmmcif_p.ParseCitation(columns));
 
+  BOOST_CHECK(tmmcif_p.GetInfo().GetCitations().back().GetYear() == 1979);
+
   columns.pop_back();
   columns.pop_back();
   columns.push_back(StringRef(".", 1));