diff --git a/include/avif/internal.h b/include/avif/internal.h
index 90f4daa..6b89827 100644
--- a/include/avif/internal.h
+++ b/include/avif/internal.h
@@ -473,8 +473,8 @@
 } avifSequenceHeader;
 avifBool avifSequenceHeaderParse(avifSequenceHeader * header, const avifROData * sample);
 
-#define AVIF_UNKNOWN_DURATION64 UINT64_MAX
-#define AVIF_UNKNOWN_DURATION32 UINT32_MAX
+#define AVIF_INDEFINITE_DURATION64 UINT64_MAX
+#define AVIF_INDEFINITE_DURATION32 UINT32_MAX
 
 #ifdef __cplusplus
 } // extern "C"
diff --git a/src/read.c b/src/read.c
index fbed925..f8a79a8 100644
--- a/src/read.c
+++ b/src/read.c
@@ -2472,7 +2472,7 @@
         AVIF_CHECK(avifROStreamReadU32(&s, &trackID));       // unsigned int(32) track_ID;
         AVIF_CHECK(avifROStreamReadU32(&s, &ignored32));     // const unsigned int(32) reserved = 0;
         AVIF_CHECK(avifROStreamReadU32(&s, &trackDuration)); // unsigned int(32) duration;
-        track->trackDuration = (trackDuration == AVIF_UNKNOWN_DURATION32) ? AVIF_UNKNOWN_DURATION64 : trackDuration;
+        track->trackDuration = (trackDuration == AVIF_INDEFINITE_DURATION32) ? AVIF_INDEFINITE_DURATION64 : trackDuration;
     } else {
         // Unsupported version
         avifDiagnosticsPrintf(diag, "Box[tkhd] has an unsupported version [%u]", version);
@@ -2884,9 +2884,9 @@
     if (!edtsBoxSeen) {
         track->repetitionCount = AVIF_REPETITION_COUNT_UNKNOWN;
     } else if (track->isRepeating) {
-        if (track->trackDuration == AVIF_UNKNOWN_DURATION64) {
-            // If isRepeating is true and track duration is unknown, then set the repetition count to infinite (Section 9.6.1 of
-            // ISO/IEC 23008-12 Part 12).
+        if (track->trackDuration == AVIF_INDEFINITE_DURATION64) {
+            // If isRepeating is true and the track duration is unknown/indefinite, then set the repetition count to infinite
+            // (Section 9.6.1 of ISO/IEC 23008-12 Part 12).
             track->repetitionCount = AVIF_REPETITION_COUNT_INFINITE;
         } else {
             // Section 9.6.1. of ISO/IEC 23008-12 Part 12: 1, the entire edit list is repeated a sufficient number of times to
diff --git a/src/write.c b/src/write.c
index 739d376..66ad49e 100644
--- a/src/write.c
+++ b/src/write.c
@@ -1545,7 +1545,7 @@
         }
         uint64_t durationInTimescales;
         if (encoder->repetitionCount == AVIF_REPETITION_COUNT_INFINITE) {
-            durationInTimescales = AVIF_UNKNOWN_DURATION64;
+            durationInTimescales = AVIF_INDEFINITE_DURATION64;
         } else {
             uint64_t loopCount = encoder->repetitionCount + 1;
             assert(framesDurationInTimescales != 0);
@@ -1623,9 +1623,9 @@
             avifBoxMarker elst = avifRWStreamWriteFullBox(&s, "elst", AVIF_BOX_SIZE_TBD, 1, elstFlags);
             avifRWStreamWriteU32(&s, 1);                          // unsigned int(32) entry_count;
             avifRWStreamWriteU64(&s, framesDurationInTimescales); // unsigned int(64) segment_duration;
-            avifRWStreamWriteU64(&s, 0);                          // unsigned int(64) media_time;
-            avifRWStreamWriteU16(&s, 1);                          // unsigned int(16) media_rate_integer;
-            avifRWStreamWriteU16(&s, 0);                          // unsigned int(16) media_rate_fraction = 0;
+            avifRWStreamWriteU64(&s, 0);                          // int(64) media_time;
+            avifRWStreamWriteU16(&s, 1);                          // int(16) media_rate_integer;
+            avifRWStreamWriteU16(&s, 0);                          // int(16) media_rate_fraction = 0;
             avifRWStreamFinishBox(&s, elst);
             avifRWStreamFinishBox(&s, edts);
 
