From what I see, the elements being written and read are not synched to the same iteration number, and thus are not array-indexed the same, therefore, you'll have a difference in the array index # for what was written and what was read. In other words, the DSS-read is not always at the same iteration # (index #) as the DSS-write when the write and read occur.
However, with that thought, you could remove all looping and simply DSS-write the whole array to your DSS-read. Then you keep the indexing equal on both ends. When you send and receive a whole array, no looping is needed, so the process also is quicker.
Well, that's how I see it, good luck with it, Doug