Wow, after a week pulling my hairs, I finally found out the bug. I was retrieving an existing TV values, before saving changes, so the oldTVs array was getting filled, but then erased by the saveTVs function.
There’s a check on the fourth line in the function and since the oldTVs was already created by my call to Get(), the oldTVs was being erased instead of getting filled.
So replace:
else
$this->oldTVs = array();
elseif ( !is_array( $this->oldTVs ) )
$this->oldTVs = array();
Well, I hope this is clear. If you have questions, don’t hesitate!