diff --git a/src/encode.c b/src/encode.c
index dc62d23245aa6133a4a25c71e268b5493d6d47d4..72e9b1a7e4bd4fb3dc530e2eb151349a610b3bd6 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -2597,6 +2597,12 @@ static void decode_value2(struct decode_data *data)
       if (!(delayed_enc_val = low_mapping_lookup (data->decoded, &entry_id)))
 	decode_error (data, NULL, "Failed to find previous record of "
 		      "delay encoded entry <%d>.\n", num);
+      if (TYPEOF(*delayed_enc_val) != T_PROGRAM ||
+	  delayed_enc_val->u.program->flags != PROGRAM_VIRGIN) {
+	decode_error (data, NULL, "Didn't get program embryo "
+		      "for delay encoded program <%O>: %O\n",
+		      &entry_id, delayed_enc_val);
+      }
       DECODE ("decode_value2");
       break;
 
@@ -3204,12 +3210,6 @@ static void decode_value2(struct decode_data *data)
 			  data->depth, "");
 		print_svalue(stderr, delayed_enc_val);
 		fputc('\n', stderr););
-	    if (TYPEOF(*delayed_enc_val) != T_PROGRAM ||
-		delayed_enc_val->u.program->flags != PROGRAM_VIRGIN) {
-	      decode_error (data, NULL, "Didn't get program embryo "
-			    "for delay encoded program <%O>: %O\n",
-			    &entry_id, delayed_enc_val);
-	    }
 	    /* No new ref here; low_start_new_program will add one for
 	     * Pike_compiler->new_program and we want ride on that one
 	     * just like when it's created there. */