Every time you click, that function is looping through the whole options table, from ONE to FOUR, calling SetText() and set() for each one. No matter how many times you click, you will always see FOUR, while the other three attempted to show within the frame you clicked.
I'm going to assume your default value is also in this frame since options is there.
Lua Code:
function(self)
local valueset
if not self.firstload then
self.firstload=true
valueset=self.value
for k,v in ipairs(self.options) do
if v=self.value then
self.lastindex=k
end
end
else
valueset=self.options[#self.options==self.lastindex and 1 or self.lastindex+1]
end
self.valueText:SetText(valueset)
self:set(valueset)
end