diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 0a83a4de01fee92273d6b184bc7957a3235db3a3..01b7accc16b514a7e35b4e40f8b6870a0db686c7 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -53,7 +53,7 @@ static void mpeg4_decode_sprite_trajectory(MpegEncContext * s);
 
 extern UINT32 inverse[256];
 
-static UINT16 mv_penalty[MAX_FCODE][MAX_MV*2+1];
+static UINT16 mv_penalty[MAX_FCODE+1][MAX_MV*2+1];
 static UINT8 fcode_tab[MAX_MV*2+1];
 static UINT8 umv_fcode_tab[MAX_MV*2+1];
 
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index fba90e71441c5d4149b2fa941ea8a9dec6fa9289..4d61df53c2ac14dfd2b1cdb6159692b536ee8ed5 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -51,7 +51,7 @@ static int mpeg2_decode_block_intra(MpegEncContext *s,
                                     int n);
 static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred);
 
-static UINT16 mv_penalty[MAX_FCODE][MAX_MV*2+1];
+static UINT16 mv_penalty[MAX_FCODE+1][MAX_MV*2+1];
 static UINT8 fcode_tab[MAX_MV*2+1];
 
 static void put_header(MpegEncContext *s, int header)
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 26f1a07e9b419f74bfdb39f46a26e007f873c51f..a4d649cfe52eb577f45828350d8ba623227bbc13 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -67,7 +67,7 @@ static UINT8 h263_chroma_roundtab[16] = {
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
 };
 
-static UINT16 default_mv_penalty[MAX_FCODE][MAX_MV*2+1];
+static UINT16 default_mv_penalty[MAX_FCODE+1][MAX_MV*2+1];
 static UINT8 default_fcode_tab[MAX_MV*2+1];
 
 /* default motion estimation */
@@ -366,7 +366,7 @@ int MPV_encode_init(AVCodecContext *avctx)
         if(!done){
             int i;
             done=1;
-            memset(default_mv_penalty, 0, sizeof(UINT16)*MAX_FCODE*(2*MAX_MV+1));
+            memset(default_mv_penalty, 0, sizeof(UINT16)*(MAX_FCODE+1)*(2*MAX_MV+1));
             memset(default_fcode_tab , 0, sizeof(UINT8)*(2*MAX_MV+1));
 
             for(i=-16; i<16; i++){