diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc
index c58c14c8dc433bbfc6c2948b8fa97dc57fa358d6..d4a9e31407089213cd006bf7bb87847ceda48079 100644
--- a/modules/io/src/mol/mmcif_reader.cc
+++ b/modules/io/src/mol/mmcif_reader.cc
@@ -342,7 +342,8 @@ mol::ResNum to_res_num(int num, char ins_code)
 }
 
 bool MMCifReader::ParseAtomIdent(const std::vector<StringRef>& columns,
-                                 String& chain_name,
+                                 String& auth_chain_name,
+                                 String& cif_chain_name,
                                  StringRef& res_name,
                                  mol::ResNum& resnum,
                                  bool& valid_res_num,
@@ -357,13 +358,11 @@ bool MMCifReader::ParseAtomIdent(const std::vector<StringRef>& columns,
     }
   }
   // CHAIN ID
-  if (auth_chain_id_) { // unit test different IDs
-    chain_name = columns[indices_[AUTH_ASYM_ID]].str();
-  } else {
-    chain_name = columns[indices_[LABEL_ASYM_ID]].str();
-  }
+  auth_chain_name = columns[indices_[AUTH_ASYM_ID]].str();
+  cif_chain_name = columns[indices_[LABEL_ASYM_ID]].str();
+
   if (restrict_chains_.size() > 0 &&
-      restrict_chains_.find(chain_name) == String::npos) {
+      restrict_chains_.find(cif_chain_name) == String::npos) {
     return false;
   } 
 
@@ -398,7 +397,8 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
 {
   mol::XCSEditor editor=ent_handle_.EditXCS(mol::BUFFERED_EDIT); // potbl
   char alt_loc=0;
-  String chain_name;
+  String auth_chain_name;
+  String cif_chain_name;
   StringRef res_name, atom_name;
   mol::ResNum res_num(0);
   bool valid_res_num = false;
@@ -416,7 +416,8 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
   }
 
   if (!this->ParseAtomIdent(columns,
-                            chain_name,
+                            auth_chain_name,
+                            cif_chain_name,
                             res_name,
                             res_num,
                             valid_res_num,
@@ -460,7 +461,7 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
   if(!curr_chain_) { // unit test
       update_chain=true;
       update_residue=true;
-  } else if(curr_chain_.GetName() != chain_name) { // unit test
+  } else if(curr_chain_.GetName() != cif_chain_name) { // unit test
     update_chain=true;
     update_residue=true;
   }
@@ -471,12 +472,12 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
     if (indices_[AUTH_SEQ_ID] != -1 &&
         indices_[PDBX_PDB_INS_CODE] != -1) {
       if (subst_res_id_ !=
-          chain_name +
+          cif_chain_name +
           columns[indices_[AUTH_SEQ_ID]].str() +
           columns[indices_[PDBX_PDB_INS_CODE]].str()) {
         update_residue=true;
 
-        subst_res_id_ = chain_name +
+        subst_res_id_ = cif_chain_name +
                         columns[indices_[AUTH_SEQ_ID]].str() +
                         columns[indices_[PDBX_PDB_INS_CODE]].str();
       }
@@ -490,10 +491,11 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
   }
 
   if(update_chain) { // unit test
-    curr_chain_ = ent_handle_.FindChain(chain_name);
+    curr_chain_ = ent_handle_.FindChain(cif_chain_name);
     if(!curr_chain_.IsValid()) { // unit test
-      LOG_DEBUG("new chain " << chain_name);
-      curr_chain_=editor.InsertChain(chain_name);
+      LOG_DEBUG("new chain " << cif_chain_name);
+      curr_chain_=editor.InsertChain(cif_chain_name);
+      curr_chain_.SetStringProp("pdb_auth_chain_name", auth_chain_name);
       ++chain_count_;
       // store entity id
       chain_id_pairs_.push_back(std::pair<mol::ChainHandle,String>(curr_chain_,
diff --git a/modules/io/src/mol/mmcif_reader.hh b/modules/io/src/mol/mmcif_reader.hh
index 06215f56b9c0006843700921ef66b02c9e1dd0ad..e9ff3b893f0e8ade4cce29838b79fb8ab89cf871 100644
--- a/modules/io/src/mol/mmcif_reader.hh
+++ b/modules/io/src/mol/mmcif_reader.hh
@@ -202,7 +202,8 @@ protected:
   /// \param[out] atom_name corresponds to label_atom_id
   /// \param[out] alt_loc gets first letter of atom_site.label_alt_id
   bool ParseAtomIdent(const std::vector<StringRef>& columns,
-                      String& chain_name,
+                      String& auth_chain_name,
+                      String& cif_chain_name,
                       StringRef& res_name,
                       mol::ResNum& resnum,
                       bool& valid_res_num,
diff --git a/modules/io/tests/test_mmcif_reader.cc b/modules/io/tests/test_mmcif_reader.cc
index b2294ba90707ce4607cc82fad2ad194ff188e4f4..fff6bbb2e6d6d2596f69f6a223aeeb957f84a50d 100644
--- a/modules/io/tests/test_mmcif_reader.cc
+++ b/modules/io/tests/test_mmcif_reader.cc
@@ -644,7 +644,7 @@ BOOST_AUTO_TEST_CASE(mmcif_struct_ref)
   BOOST_CHECK_EQUAL(seqs[1]->GetDBEnd(), 49);
   MMCifInfoStructRefSeqDifs diffs=seqs[0]->GetDifs();
   BOOST_CHECK_EQUAL(diffs.size(), 1);
-  BOOST_CHECK_EQUAL(diffs[0]->GetRNum(), 91);
+  BOOST_CHECK_EQUAL(diffs[0]->GetSeqRNum(), 91);
   BOOST_CHECK_EQUAL(diffs[0]->GetDetails(), "ENGINEERED MUTATION");
 }
 
@@ -1091,7 +1091,8 @@ BOOST_AUTO_TEST_CASE(mmcif_parseatomident)
   StarLoopDesc tmmcif_h;
   TestMMCifReaderProtected tmmcif_p(s, eh, profile);
   std::vector<StringRef> columns;
-  String chain_name;
+  String cif_chain_name;
+  String auth_chain_name;
   StringRef res_name;
   mol::ResNum resnum(0);
   bool valid_res_num = false;
@@ -1099,7 +1100,6 @@ BOOST_AUTO_TEST_CASE(mmcif_parseatomident)
   StringRef atom_name;
 
   BOOST_MESSAGE("          testing valid line");
-  //tmmcif_p.ParseAtomIdent();
   BOOST_MESSAGE("          done.");
   // negative
   //cols.push_back(StringRef("ATOM", 4));
@@ -1148,7 +1148,8 @@ BOOST_AUTO_TEST_CASE(mmcif_parseatomident)
     columns.push_back(StringRef("25.369", 6)); // Cartn_x
     columns.push_back(StringRef("30.691", 6)); // Cartn_y
     columns.push_back(StringRef("11.795", 6)); // Cartn_z
-    BOOST_CHECK_EQUAL(tmmcif_p.ParseAtomIdent(columns, chain_name, res_name,
+    BOOST_CHECK_EQUAL(tmmcif_p.ParseAtomIdent(columns, auth_chain_name,
+    			                                    cif_chain_name, res_name,
                                               resnum, valid_res_num, atom_name,
                                               alt_loc), true);
     columns.pop_back();
@@ -1167,7 +1168,8 @@ BOOST_AUTO_TEST_CASE(mmcif_parseatomident)
     columns.push_back(StringRef("25.369", 6)); // Cartn_x
     columns.push_back(StringRef("30.691", 6)); // Cartn_y
     columns.push_back(StringRef("11.795", 6)); // Cartn_z
-    BOOST_CHECK_EQUAL(tmmcif_p.ParseAtomIdent(columns, chain_name, res_name,
+    BOOST_CHECK_EQUAL(tmmcif_p.ParseAtomIdent(columns, auth_chain_name, 
+    			                                    cif_chain_name, res_name,
                                               resnum, valid_res_num, atom_name,
                                               alt_loc), false);
   }