Mr Antonio
That behavior is fine because the real assignment is done from here:
oBrw:aCols[1]:bOnPostEdit := { | oCol, xVal, nKey | If( nKey == VK_RETURN, aLin[ oBrw:nArrayAt,1] := xVal,) }
The VALID should not try to modify the edited value. It just jave to return .T. or .F., and a warning for the user, if needed
I may please be permitted to disagree. Valid clause can not modify the orginal value, but can modify the Get variable through VarPut. The postedit method calls the bOnPostEdit with whatever is the varget() ( in other words eval( oget:bsetget) ) at that time. So if we modify the value in valid clause, PostEdit method calls bOnPostEdit block with that assigned value.
Also it is not uncommon that Valid clauses open look up tables and help the user to select valid values.
What we need to do is to handle the Editget's lost focus block appropriately. Hope you will appreciate my point.