Index: trunk/source/Lib/TLibCommon/CommonDef.h
===================================================================
--- trunk/source/Lib/TLibCommon/CommonDef.h	(revision 443)
+++ trunk/source/Lib/TLibCommon/CommonDef.h	(revision 461)
@@ -58,5 +58,5 @@
 
 #define HM_VERSION        "6.1"
-#define NV_VERSION        "7.0"                  ///< Current software version
+#define NV_VERSION        "7.0r1"                  ///< Current software version
 
 // ====================================================================================================================
Index: trunk/source/Lib/TLibCommon/TComPrediction.cpp
===================================================================
--- trunk/source/Lib/TLibCommon/TComPrediction.cpp	(revision 443)
+++ trunk/source/Lib/TLibCommon/TComPrediction.cpp	(revision 461)
@@ -1910,5 +1910,10 @@
             if (depthPosX + (i<<2) + blocki < widthDepth - 1)
 #endif
-              iX++;
+
+#if NCKU_BUG_FIX
+    iX = (MERL_VSP_BLOCKSIZE_C0152-1);
+#else
+    iX++;
+#endif
           }
 #if MERL_VSP_BLOCKSIZE_C0152 == 2
@@ -1917,5 +1922,9 @@
           if (depthPosY + (j<<2) + blockj < heightDepth - 1)
 #endif
-            depthTmp += depStride;
+#if NCKU_BUG_FIX
+    depthTmp += depStride * (MERL_VSP_BLOCKSIZE_C0152-1);
+#else
+    depthTmp += depStride;
+#endif 
         }
         m_pDepth[i+j*dW] = maxV;
@@ -2222,16 +2231,32 @@
 #endif
         Int maxV = 0;
+#if NCKU_BUG_FIX
+        for (Int blockj = 0; blockj < sH; blockj+=(sH-1))
+#else
         for (Int blockj = 0; blockj < sH; blockj++)
+#endif
         {
           Int iX = 0;
+#if NCKU_BUG_FIX
+          for (Int blocki = 0; blocki < sW; blocki+=(sW-1))
+#else
           for (Int blocki = 0; blocki < sW; blocki++)
+#endif
           {
             if (maxV < depthTmp[iX])
               maxV = depthTmp[iX];
             if (depthPosX + i*sW + blocki < widthDepth - 1)
-              iX++;
+#if NCKU_BUG_FIX
+                iX = (sW-1);
+#else
+                iX++;
+#endif
           }
           if (depthPosY + j*sH + blockj < heightDepth - 1)
-            depthTmp += depStride;
+#if NCKU_BUG_FIX
+                depthTmp += depStride * (sH-1);
+#else
+                depthTmp += depStride;
+#endif
         }
         m_pDepth[i+j*dW] = maxV;
Index: trunk/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- trunk/source/Lib/TLibCommon/TypeDef.h	(revision 443)
+++ trunk/source/Lib/TLibCommon/TypeDef.h	(revision 461)
@@ -242,4 +242,5 @@
 #endif                                               // MTK_DVPREFINE_BVSP_BUG_FIX               1
 #define MTK_DEPTH_TO_DISP_D0138              1 // JCT3V-D0138: Use max among four corners for DoNBDV and BVSP
+#define NCKU_BUG_FIX                         1 // NCKU bug fix on MTK_DEPTH_TO_DISP_D0138
 
 #if MERL_General_Fix
