GPS module help needed

Ok, I've modified it as you suggested, however the behavior has not changed as far as what it outputs. Do I have to set anything on the GPS hardware to match the change on the Arduino for the serial speed or will it autonegotiate? It will print this part "inside SoftSerial.available" only with the code below, so it never breaks out of the while loop now, so the serial out reads like below. This line appears to be where it is failing/not evaluating
if (gps.encode(SoftSerial.read()))

11:20:21.357 -> inside SoftSerial.available
11:20:21.430 -> inside SoftSerial.available
11:20:21.430 -> inside SoftSerial.available
11:20:21.464 -> inside SoftSerial.available
11:20:21.514 -> inside SoftSerial.available
11:20:21.545 -> inside SoftSerial.available
11:20:21.599 -> inside SoftSerial.available
11:20:21.599 -> inside SoftSerial.available
11:20:21.628 -> inside SoftSerial.available
11:20:21.656 -> inside SoftSerial.available
11:20:21.687 -> inside SoftSerial.available
11:20:21.687 -> inside SoftSerial.available
11:20:21.752 -> inside SoftSerial.available
11:20:21.752 -> inside SoftSerial.available
11:20:21.783 -> inside SoftSerial.available
11:20:21.818 -> inside SoftSerial.available
11:20:21.852 -> inside SoftSerial.available


#include <TinyGPS++.h>           // Include TinyGPS++ library
#include <SoftwareSerial.h>      // Include software serial library
//#include <LiquidCrystal.h>       // Include LCD library
 
TinyGPSPlus gps;
 
#define S_RX    11                // Define software serial RX pin
#define S_TX    52                // Define software serial TX pin
 
SoftwareSerial SoftSerial(S_RX, S_TX);    // Configure SoftSerial library
 
// LCD module connections (RS, E, D4, D5, D6, D7)
//LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
 
byte last_second;
char Time[]  = "TIME:00:00:00";
char Date[]  = "DATE:00/00/2000";
 
void setup(void) {
  Serial.begin(9600);
  SoftSerial.begin(38400);
 
  Serial.println("");
    Serial.println("    ***** Start *****    ");
    Serial.println("");


  // set up the LCD's number of columns and rows
  //lcd.begin(16, 2);
 
  //lcd.setCursor(0, 0);
  //lcd.print(Time);                           // Display time
  //lcd.setCursor(0, 1);
  //lcd.print(Date);                           // Display calendar
}
 
void loop() {
 
  Serial.println("looping");
  while (SoftSerial.available() > 0) {
    Serial.println("inside SoftSerial.available");
    if (gps.encode(SoftSerial.read())) {
      Serial.println("inside gps.encode");
      if (gps.time.isValid()) {
        Time[5]  = gps.time.hour()   / 10 + 48;
        Time[6]  = gps.time.hour()   % 10 + 48;
        Time[8]  = gps.time.minute() / 10 + 48;
        Time[9]  = gps.time.minute() % 10 + 48;
        Time[11] = gps.time.second() / 10 + 48;
        Time[12] = gps.time.second() % 10 + 48;
      }
 
      if (gps.date.isValid()) {
        Date[5]  = gps.date.day()    / 10 + 48;
        Date[6]  = gps.date.day()    % 10 + 48;
        Date[8]  = gps.date.month()  / 10 + 48;
        Date[9]  = gps.date.month()  % 10 + 48;
        Date[13] =(gps.date.year()   / 10) % 10 + 48;
        Date[14] = gps.date.year()   % 10 + 48;
      }
 
      int Year = gps.date.year();
      byte Month = gps.date.month();
      byte Day = gps.date.day();
      byte Hour = gps.time.hour();
      byte Minute = gps.time.minute();
      byte Second = gps.time.second();

      Serial.print("Hour: "); Serial.println(Hour);
      Serial.print("Minute: "); Serial.println(Minute);
      Serial.print("Second: "); Serial.println(Second);
      Serial.println("");

      /*if(last_second != gps.time.second()) {
        last_second = gps.time.second();
        lcd.setCursor(0, 0);
        lcd.print(Time);                           // Display time
        lcd.setCursor(0, 1);
        lcd.print(Date);                           // Display calendar
      }*/
 
    }
 
  }

  delay(5);
 
}