Personally, I like the lattice method even if it does take an extra bit:
0\0 0 0 0 0 0|0
0\0\0 0 0 0 0|0
0\0\0\0 0 0 0|0
0\0\0\0\0 0 0|0
0\0\0\0\0\0 0|0
1\0\1\1\1\0\0|0
0\1\1\1\1\0 0|1
1 0\1\1\0\0\1|0
1 1 1\0\0\1\0|0
0 1 1 0\1\1\1|1
0 1 1 0 0\1\0|1
1 0 0 1 0 0\1|1
Assuming an 8 bit word, the first 6 carry the data. The seventh is parity of one bit of the previous six words and the eighth is parity of the current word. As shown in the example, you start by sending an initializing string of zeros that equals the number of data bits. Then the matrix can fix any bad bit and in theory could recover an entire word.
Assuming the underlined 1 was originally a 0. The two bold bits mark it as being wrong.