diff --git a/modules/io/src/mol/mmcif_info.cc b/modules/io/src/mol/mmcif_info.cc
index 77ae604029e8a0b71a00a3c0b48fec6972c5bf61..da292223460a6717e772a3abe60f374e0025bdae 100644
--- a/modules/io/src/mol/mmcif_info.cc
+++ b/modules/io/src/mol/mmcif_info.cc
@@ -196,11 +196,20 @@ void MMCifInfoBioUnit::Merge(MMCifInfoBioUnit& from)
 MMCifInfoStructRefSeqPtr 
 MMCifInfoStructRef::AddAlignedSeq(const String& aid, const String& chain_name, 
                                   int seq_begin, int seq_end, int db_begin, 
-                                  int db_end)
+                                  int db_end, bool fault_tolerant)
 {
   std::map<String, MMCifInfoStructRefSeqPtr>::const_iterator i=seqs_.find(aid);
   if (i!=seqs_.end()) {
-    throw IOException("duplicate align_id for struct_ref '"+id_+"'");
+    std::stringstream msg;
+    msg << "Duplicate align_id for struct_ref '" << id_ << "'";
+    if (fault_tolerant) {
+      msg << ". Record will be overwritten.";
+      LOG_WARNING(msg.str());
+    }
+    else {
+      throw IOException(msg.str());
+    }
+
   }
   MMCifInfoStructRefSeqPtr p(new MMCifInfoStructRefSeq(aid, chain_name,
                                                        seq_begin, seq_end, 
diff --git a/modules/io/src/mol/mmcif_info.hh b/modules/io/src/mol/mmcif_info.hh
index 73d3c25d2b69feafb098ed4f0d1dbd00add0657a..73946c1393d6e285b0b66637ad89ad977a462a26 100644
--- a/modules/io/src/mol/mmcif_info.hh
+++ b/modules/io/src/mol/mmcif_info.hh
@@ -858,7 +858,8 @@ public:
   const String& GetDBAccess() const { return db_access_; }
   MMCifInfoStructRefSeqPtr AddAlignedSeq(const String& align_id,
                                          const String& chain_name, int seq_begin,
-                                         int seq_end, int db_begin, int db_end);
+                                         int seq_end, int db_begin, int db_end,
+                                         bool fault_tolerant);
   MMCifInfoStructRefSeqPtr GetAlignedSeq(const String& align_id) const;
   MMCifInfoStructRefSeqs GetAlignedSeqs() const
   {
diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc
index 5ebb954dc2dccf1564d044275bfa83212a1e720c..64d632755ceb4bb3c11de43f7988196e6181c654 100644
--- a/modules/io/src/mol/mmcif_reader.cc
+++ b/modules/io/src/mol/mmcif_reader.cc
@@ -1686,7 +1686,7 @@ void MMCifReader::ParseStructRefSeq(const std::vector<StringRef>& columns)
        e=struct_refs_.end(); i!=e; ++i) { 
     if ((*i)->GetID()==sr_id) {
      (*i)->AddAlignedSeq(aln_id, chain_name, entbeg.second, entend.second, 
-                          dbbeg.second, dbend.second);
+                          dbbeg.second, dbend.second, profile_.fault_tolerant);
      found=true;
        break;
     }