I haven't found the best or right way to teach the mult. algorithm yet either, but I have seen and used a neat visual model with fourth graders that has helped some of them understand the steps of the procedure. This is very complicated for me to explain, but once you see it it seems pretty straight forward using Base 10 blocks (having several colors is a big help here, by the way. Let's sasy we're doing 31 X 45. We start by placing 3 tens and one on together lengthwise as if building the top row of a 31 X 45 array. Then We place 3 more tens and 5 ones under the first 10 making the side of a 31 X 45 array. Then fill in the array with tens and ones. If you have four colors available you can make the 30 X 40 section one color, the 1 X 40 section another color, the 30 X 5 section a third color, and the 1 X 5 section a fourth color. then the students can count up what's in there. At the beginning they may count the tens then count on the ones. AS they get better at it they may bagin to trade for hundreds and tens. In any case, this model shows the four numbers that need to get multiplied together to get the final answer and shows the relative values of the numbers in each "section". I have students who's parents showed them the algorithm and insist that they use it. This model, while not very efficient, especially at first, has helped some of these kids understand what is going on in the algorithm, and now no longer need to build the arrays to et the answer and can explain how the algorithm works. I know this sounds confusing, but it's hard for me to describe it. Seeing it, however, is very convincing.