anchor.diff:              datr=DatR,
               codr=CodR,
               time=
  -                case maps:get(time, Pk, undefined) of
  +                case get_or_undefined(time, Pk) of
                       undefined -> undefined;
                       Value -> iso8601:parse_exact(Value)
                   end,
  -            tmms=maps:get(tmms, Pk, undefined),
  +            tmms=get_or_undefined(tmms, Pk),
               rssi=
                   case {Pk, Ant} of
                       {#{rssi := RSSI}, _} when is_number(RSSI) -> RSSI;
  
positive.code:         },
          #{tmst => TmSt},
          base64:decode(Data)}.
  
  build_txpk(#txq{freq=Freq, datr=DatR, codr=CodR, time=Time, powe=Power}, GWState, RFch, Data) ->
      case Time of
  
negative.code:                 (_Else, A2) ->
                      A2
              end,
              undefined, get_or_default(rsig, Pk, [])),
      % the modu field is ignored
      % we assume "LORA" datr is a binary string and "FSK" datr is an integer
      {#rxq{
  