>I use alltrim() on the index, which makes the index smaller and optimized when searching on allt(upper(thiswhatever))=allt(upper(m.thiswhatever))
It WAS my understanding that in such a case, Visual FoxPro will use a fixed-length index expression, and that it will take the length of the first record it finds. Now I do some experiments, and it seems to work correctly - it doesn't even complain if the field in the first record happens to be empty. Perhaps there have been some changes between versions 6 and 9.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)