Hi Hans, the save/restore state for the counter in the example is ignored. %%%% begin example \enabletrackers[structures.counters] \definecounter[test] \starttext \incrementcounter[test] \convertedcounter[test] \dorecurse{10} {\savecounter[test] \incrementcounter[test] \convertedcounter[test] \restorecounter[test] \par} \stoptext %%%% end example The problem is the check for the table size in the counters.restore function because after the first save the size of the table is 1: function counters.restore(name) local cd = counterdata[name] if not cd then report_counters("invalid restore, no counter %a",name) return end local saved = cd.saved if not saved then -- is ok elseif #saved > 1 then cd.data = remove(saved) else report_counters("restore without save for counter %a",name) end end Wolfgang