anchor.diff:  
           type(sys_t), pointer, intent(in) :: sys
           type(flu_state), intent(inout) :: lua_state
  +        logical, intent(in) :: new
   
           integer :: table
   
  -        ! Create table to become sys object
  -        call aot_table_open(lua_state, thandle=table)
  -        
  -        ! Add sys pointer as t.sys
  -        call flu_pushstring(lua_state, "sys")
  -        call flu_pushlightuserdata(lua_state, c_loc(sys))
  -        call flu_settable(lua_state, table)
  -
  -        ! Add deallocation function as t:free()
  -        call flu_pushstring(lua_state, "free")
  -        call flu_pushcclosure(lua_state, lua_dealloc_sys, 0)
  -        call flu_settable(lua_state, table)
  -
  -        ! Set metatable to mark for finalisation.  Note metatable is created in register_lua_hande_api.
  -        call fluL_setmetatable(lua_state, "sys")
  +        if (new) then
  +            ! Create table to become sys object
  +            call aot_table_open(lua_state, thandle=table)
  +
  +            ! Add sys pointer as t.sys
  +            call flu_pushstring(lua_state, "sys")
  +            call flu_pushlightuserdata(lua_state, c_loc(sys))
  +            call flu_settable(lua_state, table)
  +
  +            ! Add deallocation function as t:free()
  +            call flu_pushstring(lua_state, "free")
  +            call flu_pushcclosure(lua_state, lua_dealloc_sys, 0)
  +            call flu_settable(lua_state, table)
  +
  +            ! Set metatable to mark for finalisation.  Note metatable is created in register_lua_hande_api.
  +            call fluL_setmetatable(lua_state, "sys")
  +        else
  +            ! Push already existing sys table/object onto stack
  +            call aot_table_open(lua_state, 1, table, 'sys')
  +        end if
  +
   
       end subroutine push_sys
   
  
positive.code:         end if
  
          call warn_unused_args(lua_state, keys, opts)
          call aot_table_close(lua_state, opts)
  
          call push_sys(lua_state, sys)
          nreturn = 1
  
      end function lua_heisenberg
  
negative.code:         end if
  
          call warn_unused_args(lua_state, keys, opts)
  
          call push_sys(lua_state, sys, new_basis)
          nreturn = 1
  
      end function lua_read_in
  