Wierd problem when using SoftwareSerial

okay, here is the code.

there is also an if (Serial1.available()) and if (Serial2.available()) construct which does the same as the if (Serial3.available()).
had to cut it, because of the 9500 character limit.

#include <LiquidCrystal.h>
#include "Wire.h"
#include <SoftwareSerial.h>
#include <EEPROM.h>

SoftwareSerial serial_out(10, 11); // RX, TX

// here was a lot of variable declaration

void setup(){

  
  // Initialisieren der seriellen Schnittstellen
  Serial.begin (2400);                          // Serial 0 mit einer Baud-Rate von 2400 initialisieren
  Serial1.begin(9600, SERIAL_8E1);              // Serial 1 mit 9600 Baud und Even-Parity initialisieren
  Serial2.begin(9600, SERIAL_8E1);              // Serial 2 mit 9600 Baud und Even-Parity initialisieren
  Serial3.begin(9600, SERIAL_8E1);              // Serial 3 mit 9600 Baud und Even-Parity initialisieren

  // Software-Port initialisieren mit 2400 Baud
  serial_out.begin(2400); 

}

//*********************************************************************
//*********************************************************************  ==> MAIN BEGIN <==

void loop()
{

  // ************************************* Print Serial with Time-Stamp (Serial_3)   

  // when characters arrive over the serial port...
  if (Serial3.available()) {

    Serial3.setTimeout(45);                            // 45 ms fürs Datenholen
    Serial3.readBytes(comein_3, 11);                   // 11 Bytes einlesen          


     if ( puffer[4] != (byte) comein_3[9] ){
      for( int i=5; i<10; i++ ){
        puffer[ i-5 ] = comein_3[ i ];                // 5 benötigeten Bytes in Puffer ablegen   
      }



  // here i put the bytes from puffer into fertig_daten

      for( int i=0; i<=9; i++ ){                                              // Daten in Speicher ablegen zur Anzeige auf LCD
        EEPROM.write( count  + i, fertig_daten[ i ]);
      }

      EEPROM.write( count + 10, ';');      // Zeit ebenfalls in Speicher ablegen
      EEPROM.write( count + 11, stunde_1);
      EEPROM.write( count + 12, minute_1);
      EEPROM.write( count + 13, minute_2);
      EEPROM.write( count + 14, sekunde_1);
      EEPROM.write( count + 15, sekunde_2);
      EEPROM.write( count + 16, millisekunde_1);
      EEPROM.write( count + 17, millisekunde_2);
      EEPROM.write( count + 18, '#');

      show = count;                                     // Platzierung merken
      count = count + 19;                               // Speicherstelle erhöhen
      // ************************************** Speicherstelle in EEPROM speicher ****************************
      val[3]=count % 10;                                 // aufteilen auf 3 stellen
      delay(10); 
      val[2]=(count % 100)/ 10;
      delay(10);
      val[1]=(count % 1000) / 100;
      delay(10);



      EEPROM.write(1, val[1]);                            // speichern der 3 stellen
      delay(10);
      EEPROM.write(2, val[2]);
      delay(10);
      EEPROM.write(3, val[3]);
      delay(10);
      // ********************************************************************************************

      fertig_daten[ 10 ] = ';';                                               // Trennzeichen in Puffer ablegen
      fertig_daten[ 11 ] = stunde_1;                                          // Zeit in Übergabe-Array ablegen

      fertig_daten[ 12 ] = minute_1;
      fertig_daten[ 13 ] = minute_2;

      fertig_daten[ 14 ] = sekunde_1;
      fertig_daten[ 15 ] = sekunde_2;

      fertig_daten[ 16 ] = millisekunde_1;
      fertig_daten[ 17 ] = millisekunde_2;

      fertig_daten[ 18 ] = '#';                         // Abschlußzeichen in Puffer ablegen

      
      serial_out.print( (char*) fertig_daten);          // Datenübertragung an SK-System


      if (led_3_State == LOW) {
        //digitalWrite(led_3_Pin, HIGH);                                         // LED aneinschalten
        led_3_Millis = currentMillis;                                          // Zeitpunkt des Einschaltens von LED1
        led_3_State = HIGH;
      }
    }
  }




  //********************************************************************* Print chip
  if ( show != show_alt){                     // Nur neue Ausschrift, wenn neue Daten

    lcd.setCursor(0, 2);
    lcd.print("Platz ");

    if((show/19+1)<10){
      lcd.print("0");
    }
    lcd.print((show/19)+1);

    lcd.setCursor(8, 2); 

    lcd.print(":"); 

    for(int b=0; b<=9;b++){
      lcd.write( EEPROM.read( show + b ) );
    }

    //********************************************************************* Print Memory

    lcd.setCursor(0, 3);
    lcd.print("Zeit: ");

    lcd.write( EEPROM.read( show + 11 ) );
    lcd.print(":");

    lcd.write( EEPROM.read( show + 12 ) );
    lcd.write( EEPROM.read( show + 13 ) );
    lcd.print(":");

    lcd.write( EEPROM.read( show + 14 ) );
    lcd.write( EEPROM.read( show + 15 ) );
    lcd.print(":");

    lcd.write( EEPROM.read( show + 16 ) );
    lcd.write( EEPROM.read( show + 17 ) );

    show_alt = show;                                              // Stelle merken, für Vergleich ob neue Daten da sind
  }

  //*********************************************************************  ==> MAIN END <==
  //*********************************************************************

}