diff --git a/modules/seq/base/src/aligned_column.cc b/modules/seq/base/src/aligned_column.cc
index 8f5f1081c09633766b8ede9797807af8a7e29bd2..e07e828b5d91b685aef767d574f72223b37d12d9 100644
--- a/modules/seq/base/src/aligned_column.cc
+++ b/modules/seq/base/src/aligned_column.cc
@@ -38,16 +38,19 @@ int AlignedColumn::GetIndex() const
 
 char AlignedColumn::operator[](int row) const
 {
+  this->CheckRowValidity(row);
   return aln_.GetOneLetterCode(row, index_);
 }
 
 int AlignedColumn::GetResidueIndex(int row) const
 {
+  this->CheckRowValidity(row);
   return aln_.GetResidueIndex(row, index_);
 }
 
 mol::ResidueView AlignedColumn::GetResidue(int row) const
 {
+  this->CheckRowValidity(row);
   return aln_.GetResidue(row, index_);
 }
 
@@ -64,4 +67,12 @@ int AlignedColumn::GetRowCount() const
   return aln_.GetCount();
 }
 
+void AlignedColumn::CheckRowValidity(int row) const
+{
+  if(row<0 || row>=this->GetRowCount()){
+    throw std::out_of_range("Row out of bounds");
+  }
+}
+
+
 }}
diff --git a/modules/seq/base/src/aligned_column.hh b/modules/seq/base/src/aligned_column.hh
index 2ea6e5ccabc87da2a559e19cd678b52dd7d49688..75bdf6fd31cd174458166887fc7d03e53edc5621 100644
--- a/modules/seq/base/src/aligned_column.hh
+++ b/modules/seq/base/src/aligned_column.hh
@@ -55,6 +55,8 @@ public:
   /// \sa AlignmentHandle::GetResidue()
   mol::ResidueView GetResidue(int row) const;
 private:
+  void CheckRowValidity(int row) const;
+
   AlignmentHandle aln_;
   int             index_;
 };
diff --git a/modules/seq/base/src/aligned_region.cc b/modules/seq/base/src/aligned_region.cc
index 3db9d14300fd53c4495c6c2df6c041197e05978f..fc4a3c6d69b41513e43ffdde09e1809b27a391a0 100644
--- a/modules/seq/base/src/aligned_region.cc
+++ b/modules/seq/base/src/aligned_region.cc
@@ -94,7 +94,11 @@ AlignedColumnIterator AlignedRegion::end()
 
 AlignedColumn AlignedRegion::operator[](int index) const
 {
-  return AlignedColumn(aln_, start_+index);
+  int col_index = start_+index;
+  if(col_index<start_ || col_index>=end_){
+    throw std::out_of_range("Index out of region");
+  }
+  return AlignedColumn(aln_, col_index);
 }
 
 bool AlignedRegion::operator==(const AlignedRegion& rhs) const