The only problem I see is the negative margin you have on the outer div that’s pulling the <span>s to the right, along with the float right, hiding the right part of them.
That’s an old IE6 bug when using negative margins on an element that shifts out of it’s parent, the cure for that is position:relative on the shifted element.
In IE6 the text renders horizontally instead of vertically. So it seems the span block is not forcing each character to a new line.
It’s working for me as long as the span does not get haslayout
You can do what you are wanting without all the spans by using word-wrap:break-word;, it’s CSS3 but IE has supported it for quite some time. Actually it was an IE property if I remember correctly.