public void engineNextBytes (byte[] bytes) {
		int    index  = 0;
		int    todo;
		byte[] output = this.remainder;
		
		// First use remainder from last time
		int rC = this.remCount;
		if (rC > 0) {
			todo = (bytes.length - index) < (4 - rC) ? (bytes.length - index) : (4 - rC);
			for (int i = 0; i < todo; i++, rC++)
				bytes[i] = output[rC];
			
			this.remCount += todo;
			index         += todo;
		}
		
		// If we need more bytes, get them
		while (index < bytes.length) {
			output = ISAACEngine.toByteArray (this.isaac.nextInt ());
			
			todo = (bytes.length - index) > 4 ? 4 : (bytes.length - index);
			for (int i = 0; i < todo; i++, index++)
				bytes[index] = output[i];
			
			this.remCount += todo;
		}
		
		// Store remainder for next time
		this.remainder = output;
		this.remCount %= 4;
	}