If $B_1$ and $B_2$ are the bases of two integer lattices $L_1$ and $L_2$, i.e.
$L_1=\{B_1n:n\in\mathbb Z^d\}$ and $L_2=\{B_2n:n\in\mathbb Z^d\}$,
is there an easy way to determine a basis for $L_1\cap L_2$? Answers of the form "Plug the matrices into a computer and ask for Hermite Normal Form, etc" are perfectly acceptable as this is a practical problem and the matrices of integers $B_1$ and $B_2$ are known, but I need some algorithmic way because the procedure will be repeated many times.
A set of lecture notes up at http://cseweb.ucsd.edu/classes/wi10/cse206a/lec2.pdf suggests computing the dual bases $D_1$ and $D_2$ of your lattices, then getting the HNF/orthogonalization of the concatenated matrix $[D_1\mid D_2]$ and then computing the dual of that. You'll want to be slightly careful with your algorithm for computing normal form to keep the intermediate coefficients from blowing up, but that shouldn't be too hard.