Arduino messing up as slave over I2C
I find your onRequest function obscure:

void sendPI(){
     int values[] = {(int)out, (int)outReversed  };

     Wire.write(values[count]);
     count++;
     if(count &gt; 1){
     count = 0;

     }
 }


Why only send one byte? I think you have a number of problems:


The size of int on the Arduino Uno is 2 bytes, on a Pi it is 4 bytes. So there is a mismatch there for a start.
Wire.write (written like that) sends one byte, so that is only going to be half of your int. So that is even less. 
It isn't obvious what the Pi end is doing, but to make the int sizes match, I would be sending the lot in one hit like this:

void sendPI(){
     long values[] = {(int)out, (int)outReversed  };
     Wire.write((byte *) &amp;values, sizeof values);
 }


Now you just read 8 bytes on the Pi (two ints).