diff --git a/src/engine.c b/src/engine.c
index 5100315199543b0896525f798d17085ced2c19a7..b994f5a76386a1d586edc4db04332cbabfd7fc80 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -277,7 +277,7 @@ void engine_redistribute(struct engine *e) {
         }
 
 #ifdef SWIFT_DEBUG_CHECKS
-        if (s->parts[k].gpart->id < 0)
+        if (s->parts[k].gpart->id_or_ned_offset >= 0)
           error("Trying to link a partnerless gpart !");
 #endif
 
@@ -467,11 +467,11 @@ void engine_redistribute(struct engine *e) {
       /* Does this gpart have a partner ? */
       if (gparts_new[k].id_or_neg_offset <= 0) {
 
-        const size_t partner_index = offset_parts - gparts_new[k].id_or_neg_offset;
+        const ptrdiff_t partner_index = offset_parts - gparts_new[k].id_or_neg_offset;
 
         /* Re-link */
         gparts_new[k].id_or_neg_offset = -partner_index;
-        parts[partner_index].gpart = &gparts_new[k];
+        parts_new[partner_index].gpart = &gparts_new[k];
       }
     }
 
diff --git a/src/part.c b/src/part.c
index 75adcbfca08ef705fdbb778c651eab6c61715eeb..7634040adc6ea0a4f84fca50dd12c0a8cdbe56c4 100644
--- a/src/part.c
+++ b/src/part.c
@@ -53,7 +53,7 @@ void part_relink_gparts(struct part *parts, size_t N, ptrdiff_t offset) {
  */
 void part_relink_parts(struct gpart *gparts, size_t N, struct part *parts) {
   for (size_t k = 0; k < N; k++) {
-    if (gparts[k].id_or_neg_offset < 0) {
+    if (gparts[k].id_or_neg_offset <= 0) {
       parts[-gparts[k].id_or_neg_offset].gpart = &gparts[k];
     }
   }