Loop skips 1 index

I have a loop that runs, it skips the last index, sometimes the first. For no reason.

		for key, value in pairs(Data.Items) do
			if value.Locked == false then
				total += value.Amount * value.RAP;
				removeItem:RemoveItem(player, value.Amount, value);
			end
		end

SOLUTION IF ANYONE ELSE HAS THIS ISSUE:

    local sellOffset = 0
        for Index = 1, #Data.Items do
            local value = Data.Items[Index - sellOffset]
            if value.Locked == false then
                total += value.Amount * value.RAP;
                removeItem:RemoveItem(player, value.Amount, value);
                sellOffset += 1;
                continue
            end
            sellOffset += 1;
        end