mesh current discrepancy in demystified circuit analysis book
I set up the following loops, always starting the lower left-hand corner of each:

$$\begin{align*}
0\:\text{V}-2\:\Omega\cdot I_3-6\:\text{V}+2\:\text{V}-2\:\Omega\left(I_3-I_2\right)+8\:\text{V}-4\:\Omega\left(I_3-I_1\right)&amp;=0\:\text{V}\\\\
0\:\text{V}+20\:\text{V}-10\:\Omega\cdot I_1-4\:\Omega\left(I_1-I_3\right)-8\:\text{V}-6\:\Omega\left(I_1-I_2\right)-6\:\text{V}&amp;=0\:\text{V}\\\\
0\:\text{V}+6\:\text{V}-6\:\Omega\left(I_2-I_1\right)-2\:\Omega\left(I_2-I_3\right)-2\:\text{V}-6\:\Omega\cdot I_2-2\:\text{V}&amp;=0\:\text{V}
\end{align*}$$

I then created three equations and solved for three unknowns:

a1=solve([e1,e2,e3],[i1,i2,i3])
{i1: 129/194, i2: 55/97, i3: 189/194}


That's it.

Oh, may as well print out the decimal values:

for x in a1: x, a1[x].n()
(i3, 0.974226804123711)
(i2, 0.567010309278350)
(i1, 0.664948453608247)