diff --git a/lib/modules/Remote.pmod/call.pike b/lib/modules/Remote.pmod/call.pike
index 2fa3abc55e687d0a102247edd91c857474317f99..6ddd6c7308bee896291ad940a554d6e8f27bba8e 100644
--- a/lib/modules/Remote.pmod/call.pike
+++ b/lib/modules/Remote.pmod/call.pike
@@ -1,6 +1,8 @@
 
 #include "remote.h"
 
+constant is_remote_call = 1;
+
 string objectid;
 string name;
 object con;
diff --git a/lib/modules/Remote.pmod/context.pike b/lib/modules/Remote.pmod/context.pike
index f13789590177f6b00db24dea5334fe7cdcfafb3f..8f5825c1eb3089015e6ca62adceebbd34ecdc4d1 100644
--- a/lib/modules/Remote.pmod/context.pike
+++ b/lib/modules/Remote.pmod/context.pike
@@ -97,7 +97,7 @@ array encode(mixed val)
 {
   if (intp(val) || floatp(val))
     return ({ CTX_OTHER, val });
-  if (objectp(val) && !val->_encode_object)
+  if (objectp(val) && (object_program(val)->is_remote_obj || !val->_encode_object))
     return ({ CTX_OBJECT, id_for(val) });
   if (functionp(val) || programp(val))
     return ({ CTX_FUNCTION, id_for(val) });
diff --git a/lib/modules/Remote.pmod/obj.pike b/lib/modules/Remote.pmod/obj.pike
index 61d9c803c99d2a2f491605943eda0d67332eea11..bbc67f7c762dabb0c6a1cdd79b19d4c9adbdf039 100644
--- a/lib/modules/Remote.pmod/obj.pike
+++ b/lib/modules/Remote.pmod/obj.pike
@@ -1,6 +1,8 @@
 
 #include "remote.h"
 
+constant is_remote_obj = 1;
+
 string id;
 object con;
 object ctx;