Index: branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.cpp
===================================================================
--- branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1281)
+++ branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.cpp	(revision 1284)
@@ -3041,4 +3041,14 @@
 }
 
+#if NH_3D_FIX_PRUNING
+Bool TComDataCU::hasEqualMotion( Int dirA, const TComMvField* mvFieldA, Int dirB, const TComMvField* mvFieldB )
+{
+  return  ( dirA == dirB  &&
+    ( ( dirA & 1 ) == 0 || mvFieldA[0] == mvFieldB[0]  ) &&
+    ( ( dirA & 2 ) == 0 || mvFieldA[1] == mvFieldB[1]  ) 
+    );
+}
+#endif
+
 #if NH_3D_VSP
 /** Add a VSP merging candidate
@@ -3143,5 +3153,9 @@
       if( !iLoop && ivCandDir[0] > 0)
       {
+#if NH_3D_FIX_PRUNING
+        if( hasEqualMotion(tmpDir, tmpMV, m_mergCands[MRG_IVMC].m_uDir, m_mergCands[MRG_IVMC].m_cMvField )) 
+#else
         if(tmpDir == m_mergCands[MRG_IVMC].m_uDir && m_mergCands[MRG_IVMC].m_cMvField[0]==tmpMV[0] && m_mergCands[MRG_IVMC].m_cMvField[1]==tmpMV[1])
+#endif
         {
             bRemove                         = true;
@@ -3592,9 +3606,13 @@
       for(iCnloop = 0; iCnloop < 2; iCnloop ++)
       {
-        if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // prunning to A1, B1
+        if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // pruning to A1, B1
         {
           continue;
         }
+#if NH_3D_FIX_PRUNING
+        if (hasEqualMotion( tmpDir, tmpMV, m_mergCands[MRG_A1+iCnloop].m_uDir, m_mergCands[MRG_A1+iCnloop].m_cMvField ) )
+#else
         if (tmpDir == m_mergCands[MRG_A1+iCnloop].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+iCnloop].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+iCnloop].m_cMvField[1])
+#endif
         {
           m_mergCands[MRG_A1+iCnloop].m_bAvailable = false;
@@ -3666,13 +3684,10 @@
       for(Int i = 0; i < 2; i ++)
       {
-        if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // prunning to A1, B1
+        if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // pruning to A1, B1
         {
           continue;
         }
 #if NH_3D_FIX_PRUNING
-        if  (   ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir                                &&
-            ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
-            ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  ) 
-           )
+        if (hasEqualMotion(ivCandDir[0], tmpMV, m_mergCands[MRG_A1+i].m_uDir,  m_mergCands[MRG_A1+i].m_cMvField) )
 #else
         if (ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1])
@@ -3684,11 +3699,8 @@
       }
     }
-    if (bIsDepth)
+    else
     {
 #if NH_3D_FIX_PRUNING
-      if  ( m_mergCands[MRG_T].m_bAvailable &&   ivCandDir[0] == m_mergCands[MRG_T].m_uDir  &&
-        ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0]  ) &&
-        ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1]  ) 
-        )
+      if( hasEqualMotion( ivCandDir[0], tmpMV, m_mergCands[MRG_T].m_uDir, m_mergCands[MRG_T].m_cMvField ) )
 #else
       if (m_mergCands[MRG_T].m_bAvailable && ivCandDir[0] == m_mergCands[MRG_T].m_uDir && tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1])
@@ -3790,8 +3802,5 @@
       }
 #if NH_3D_FIX_PRUNING
-      if  ( ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir  &&
-        ( ( ivCandDir[1] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
-        ( ( ivCandDir[1] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  ) 
-        )
+      if ( hasEqualMotion(ivCandDir[1], tmpMV, m_mergCands[MRG_A1+i].m_uDir, m_mergCands[MRG_A1+i].m_cMvField) )
 #else
       if (ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1])
Index: branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.h
===================================================================
--- branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.h	(revision 1281)
+++ branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.h	(revision 1284)
@@ -660,5 +660,7 @@
 
   Bool          hasEqualMotion              ( UInt uiAbsPartIdx, TComDataCU* pcCandCU, UInt uiCandAbsPartIdx );
-
+#if NH_3D_FIX_PRUNING
+  Bool          hasEqualMotion              ( Int dirA, const TComMvField* mvFieldA,  Int dirB, const TComMvField* mvFieldB  );
+#endif
 #if NH_3D_MLC
   Bool          getAvailableFlagA1() { return m_bAvailableFlagA1;   }
Index: branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComRom.cpp
===================================================================
--- branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComRom.cpp	(revision 1281)
+++ branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComRom.cpp	(revision 1284)
@@ -704,10 +704,10 @@
   }
   Bool stopFlag = false; 
-  if ( g_stopAtPos && poc == 6 && layerId == 2 )
+  if ( g_stopAtPos && poc == 16 && layerId == 5 )
   {
     Bool stopAtCU = true; 
     if ( stopAtCU )        // Stop at CU with specific size
     {    
-      stopFlag = ( cuPelX  == 128 ) && ( cuPelY  == 160 ) && ( cuWidth == 32 ) && ( cuHeight == 32 ); 
+      stopFlag = ( cuPelX  == 224 ) && ( cuPelY  == 128 ) && ( cuWidth == 16 ) && ( cuHeight == 16 ); 
     }
     else
Index: branches/HTM-14.1-update-dev2/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- branches/HTM-14.1-update-dev2/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1281)
+++ branches/HTM-14.1-update-dev2/source/Lib/TLibEncoder/TEncCu.cpp	(revision 1284)
@@ -2272,4 +2272,8 @@
     for( Int nARPW = 0; nARPW <= nARPWMax; nARPW++ )
     {
+#if DEBUG_STRING && H_MV_ENC_DEC_TRAC
+      sTest.clear(); 
+#endif
+
       if( !bFirstTime && rpcTempCU->getSlice()->getIvResPredFlag() )
       {
