# File lib/ruote/exp/fe_inc.rb, line 161
    def new_value (type, key)

      dec = name.match(/^dec/)

      if type == nil && m = PREFIX_REGEX.match(key)
        type = (m[1][0, 1] == 'f' ? :field : :var)
        key = m[2]
      end

      delta = lookup_val

      ndelta = Ruote.narrow_to_number(delta || 1)
      ndelta = -ndelta if dec && ndelta

      value = type == :var ?
        lookup_variable(key) :
        Ruote.lookup(h.applied_workitem['fields'], key)

      pos = attribute(:position) || attribute(:pos)

      return ((value || 0) + ndelta) if ndelta && (not value.is_a?(Array))

      pos ||= 'tail'
      value ||= []

      return (pos == 'tail' ? value + [ delta ] : [ delta ] + value) unless dec

      to_v, to_f = determine_tos
      to_v = 'd' if to_v.nil? && to_f.nil?

      car, cdr = if delta != nil
        (value.delete(delta) != nil ) ? [ delta, value ] : [ nil, value ]
      elsif pos == 'tail'
        [ value[-1], value[0..-2] ]
      else
        [ value[0], value[1..-1] ]
      end

      to_v ? set_v(to_v, car) : set_f(to_f, car)

      cdr
    end