diff --git a/ChangeLog b/ChangeLog
index c9dd8473..db2b1b99 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,20 @@
 ################################################################################  
 ################################################################################
 
+################################################################################
+### version 3.1.3
+################################################################################  
+
+# IntaRNA
+- bugfix latest changes on traceback
+
+################################################################################  
+
+191104 Martin Raden
+ * PredictorMfe2dSeedExtension::
+   * traceBack() 
+     * bugfix tracback (reset of k2 iteration)
+
 191031 Martin Raden
  * using c++11 raw strings where appropriate
 
diff --git a/src/IntaRNA/PredictorMfe2dSeedExtension.cpp b/src/IntaRNA/PredictorMfe2dSeedExtension.cpp
index 3d2e5d75..b98278ee 100644
--- a/src/IntaRNA/PredictorMfe2dSeedExtension.cpp
+++ b/src/IntaRNA/PredictorMfe2dSeedExtension.cpp
@@ -392,8 +392,8 @@ traceBack( Interaction & interaction )
 						// check all combinations of decompositions into (i1,i2)..(k1,k2)-(si1,si2)
 						const size_t k1max = std::min(si1-1,i1+noLpShift+energy.getMaxInternalLoopSize1()+1);
 						const size_t k2max = std::min(si2-1,i2+noLpShift+energy.getMaxInternalLoopSize2()+1);
-						for (k1++; traceNotFound && k1<=k1max; k1++) {
-						for (k2++; traceNotFound && k2<=k2max; k2++) {
+						for (k1=i1+noLpShift+1; traceNotFound && k1<=k1max; k1++) {
+						for (k2=i2+noLpShift+1; traceNotFound && k2<=k2max; k2++) {
 							// check if (k1,k2) are valid left boundary
 							if ( E_isNotINF( hybridE_left(si1-k1,si2-k2) ) ) {
 								if ( E_equal( curE,
@@ -411,10 +411,10 @@ traceBack( Interaction & interaction )
 									i1=k1;
 									i2=k2;
 									curE = hybridE_left(si1-i1,si2-i2);
-								}
-							}
-						}
-						}
+								} // found trace step
+							} // (k1,k2) complementary
+						} // k2
+						} // k1
 						if (traceNotFound) {
 							LOG(ERROR) <<"left-not-found:  i "<<i1<<","<<i2<<"  si "<<si1<<","<<si2;
 							throw std::runtime_error("trace not found");