sono mezzo incasinato con un programma che non vuole andare, potreste aiutarmi con 2-3 cast?

thanks.

1.
codice:
public static final byte NGIOC=2;// dominio={2,4}
private byte turno;//dominio [0,3]

public void incTurno(){
       turno=(turno++)%NGIOC;
}
incTurno non mi da i risultati sperati, non volendo ricorrere a un if, dove devo mettere il cast? (da anche un warning di possible loss of precision)

2.
codice:
public static final byte NGIOC=2;// dominio={2,4}
private byte turno;//dominio [0,3]
private byte vincTurnoPrec;//dominio [0,3]

for(byte i=(vincTurnoPrec++)%NGIOC;i<vincTurnoPrec;i=(i++)%NGIOC);
il problema è simile a sopra, non so dove mettere il cast, thanks!!