>>>>> "L" == Louis Krupp <lkrupp / pssw.NOSPAMPLEASE.com.invalid> writes: L> The second word (as I'm sure you know) is normally a count of how L> many nodes are in the list. I tried adding a flag bit and making L> that word be either a counter or a tail pointer. I don't remember L> the details, but I couldn't get it to work in a reasonable amount L> of time. So I finally did the brute force thing and added a word. Not the second word, the second element. For example actually you have last = list; while (last->nd_next) { last = last->nd_next; } Try to replace it with if (list->nd_next) { last = list->nd_next->nd_end; } else { last = list; } i.e. the first element give the size, the second give the end. You just need to adapt one macro in eval.c to make it work (if I'm right) Guy Decoux