diff --git a/skeletons/asn_internal.h b/skeletons/asn_internal.h
index 1de4ba9285dc7f917549386aa2b1ebb6f3ca6804..7e0f71be08a40835b85ad4e4ac12106f6dbacd97 100644
--- a/skeletons/asn_internal.h
+++ b/skeletons/asn_internal.h
@@ -28,6 +28,9 @@ int get_asn1c_environment_version(void);	/* Run-time version */
 #define	REALLOC(oldptr, size)	realloc(oldptr, size)
 #define	FREEMEM(ptr)		free(ptr)
 
+#define	asn_debug_indent	0
+#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
+
 /*
  * A macro for debugging the ASN.1 internals.
  * You may enable or override it.
@@ -36,9 +39,11 @@ int get_asn1c_environment_version(void);	/* Run-time version */
 #if	EMIT_ASN_DEBUG == 1	/* And it was asked to emit this code... */
 #ifdef	__GNUC__
 #ifdef	ASN_THREAD_SAFE
-#define	asn_debug_indent	0
-#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
+/* Thread safety requires sacrifice in output indentation:
+ * Retain empty definition of ASN_DEBUG_INDENT_ADD. */
 #else	/* !ASN_THREAD_SAFE */
+#undef  ASN_DEBUG_INDENT_ADD
+#undef  asn_debug_indent
 int asn_debug_indent;
 #define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0)
 #endif	/* ASN_THREAD_SAFE */
diff --git a/skeletons/per_opentype.c b/skeletons/per_opentype.c
index a750fe80a79c17204dcbb65fc2893a93121605e2..03a31d2d4afbef838298a83a7c52e4456d2131dd 100644
--- a/skeletons/per_opentype.c
+++ b/skeletons/per_opentype.c
@@ -7,16 +7,6 @@
 #include <constr_TYPE.h>
 #include <per_opentype.h>
 
-/* Thread safety requires sacrifice in output indentation. */
-#ifndef ASN_DEBUG_INDENT_ADD
-#ifdef  ASN_THREAD_SAFE
-#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
-#else   /* !ASN_THREAD_SAFE */
-int asn_debug_indent;
-#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0)
-#endif  /* ASN_THREAD_SAFE */
-#endif  /* ASN_DEBUG_INDENT_ADD */
-
 typedef struct uper_ugot_key {
 	asn_per_data_t oldpd;	/* Old per data source */
 	size_t unclaimed;