anchor.diff:                      {hd,#bind{tind=?MainIdx,cind=Cx,type=Type}=B} ->
                           Fx = fun(X) -> 
                               OldVal = Proj(X),
  -                            case imem_datatype:io_to_db(Item,OldVal,list_type(Type),undefined,undefined,<<>>,false,Value) of
  -                                OldVal ->   X;
  -                                NewVal ->   ?replace(X,Cx,[NewVal|tl(?BoundVal(B,X))])
  +                            case {Value, OldVal} of 
  +                                {?navio,?nav} ->
  +                                    X;                                                  % attribute still not present
  +                                {?navio,_} ->       
  +                                    ?replace(X,Cx,tl(?BoundVal(B,X)));                  % remove head
  +                                _ ->
  +                                    case imem_datatype:io_to_db(Item,OldVal,list_type(Type),undefined,undefined,<<>>,false,Value) of
  +                                        OldVal ->   X;
  +                                        NewVal ->   ?replace(X,Cx,[NewVal|tl(?BoundVal(B,X))])
  +                                    end
                               end
                           end,     
                           {Cx,1,Fx};
  
positive.code:                         {Cx,Pos,Fx};
                      {nth,PosBind,#bind{tind=?MainIdx,cind=Cx,type=Type}=B} ->
                          Pos = imem_sql_expr:bind_tree(PosBind,Recs),
                          Fx = fun(X) -> 
                              OldVal = Proj(X),
                              case imem_datatype:io_to_db(Item,OldVal,list_type(Type),undefined,undefined,<<>>,false,Value) of
                                  OldVal ->               
                                      X;
                                  NewVal1 when Pos==1 ->  
                                      ?replace(X,Cx,[NewVal1|tl(?BoundVal(B,X))]);
                                  NewVal2 ->              
                                      Old = ?BoundVal(B,X),
                                      ?replace(X,Cx,lists:sublist(Old,Pos-1) ++ NewVal2 ++ lists:nthtail(Old,Pos))
                              end 
                          end,     
                          {Cx,Pos,Fx};
                      {from_binterm,#bind{tind=?MainIdx,cind=Cx,type=Type}} ->
  
negative.code:                         Pos = length(?BoundVal(B,Recs)),
                          Fx = fun(X) -> 
                              OldVal = Proj(X),
                              case {Value, OldVal} of 
                                  {?navio,?nav} ->
                                      X;                                                  % attribute still not present
                                  {?navio,_} ->       
                                      ?replace(X,Cx,lists:sublist(?BoundVal(B,X),Pos-1)); % remove last element
                                  _ ->
                                      case imem_datatype:io_to_db(Item,OldVal,list_type(Type),undefined,undefined,<<>>,false,Value) of
                                          OldVal ->   X;
                                          NewVal ->   ?replace(X,Cx,lists:sublist(?BoundVal(B,X),Pos-1) ++ NewVal)
                                      end
                              end
                          end,     
                          {Cx,Pos,Fx};
  