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.