Perfetto, ho visto il problema, è una questione di priorità nell'esecuzione delle condizioni.
Spiego brevemente:
- Nello script funzionante (ma poco ottimizzato) il fatto di avere un ciclo distinto per ciascuna delle condizioni fa in modo di valutare ciascuna finché il relativo ciclo non è terminato. In questo caso è possibile quindi che una delle varie righe sia verificata per la singola condizione.
Avviene quindi una condizione per ognuno dei tre cicli.
- Nello script ottimizzato (ma poco funzionante) le tre condizioni sono eseguite all'interno dello stesso ciclo, per cui è possibile che una di queste sia verificata prima che il ciclo finisca, anche se la condizione precedente "potrebbe" essere verificata per una tra le righe successive.
Avvengono quindi 3 condizioni per ogni riga in un unico ciclo.
Questo aspetto in effetti non lo avevo considerato
Ora, l'ideale sarebbe ottenere uno script "ottimizzato e funzionante"ma non so se sia possibile...
Per il momento tieni per buono quello funzionante, nel mentre posso provare ad aggiustare quello ottimizzato per capire se si può utilizzare comunque.