Crazy corruption in byte Array when Serial.write

Can someone please help me understand why the last byte in my code gets corrupted in this basic serial write sketch? In my MegaArduino application, on Serial 1, I need to receive a 5 byte packet and then resend the same packet. When I looked at the serial stream on my logic analyzer the last byte sent was always wrong. After many frustrating attempts I decided to isolate the code. I got rid of the serial receive code completely and replaced it with a dummy dataPacket duplicating what I normally would receive on the serial line so I could test the serial write and the corrupted last byte still is there.

byte dataPacket [4];  // 0-4  --> 5 bytes

void setup (){ 
  Serial.begin (9600);
  Serial1.begin (9600);
} 

void loop (){
  CheckSerial();
} 

void CheckSerial()  //for debugging instead of receiving actual packet I created the packet below
{
  //here is the expected 5 byte packet  
  dataPacket[0] = 2;
  dataPacket[1] = 136;
  dataPacket[2] = 49;
  dataPacket[3] = 0;
  dataPacket[4] = 4;
  
  SendSerial();
}

void SendSerial()
{
  delay (60);  
  Serial.println("TX= ");
  for (int j=0; j < 5; j++)
  {
    Serial1.write(dataPacket[j]);  // sent out to the external device
    Serial.print(dataPacket[j]);   // mirrored on the laptop Arduino serial monitor
    Serial.println(" ");
  }
  Serial.println("DONE");
}

Here is how the dataPacket looks on the Serial monitor:

TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE
TX= 
2 
136 
49 
0 
63 
DONE

Why is the last byte in the array (4) being sent as either 63 (occasional 64 as well) ??
What am I doing crazy here?
please help. thanks

A data definition like:

byte dataPacket [4];  // 0-4  --> 5 bytes

specifies the number of elements you want for the array, not index positions. Your definition asks for 4 elements when you really need 5. Change the definition to:

byte dataPacket [5];  // 0-4  --> 5 bytes