diff --git a/icu4c/source/i18n/udateintervalformat.cpp b/icu4c/source/i18n/udateintervalformat.cpp
index e16df08..3889603 100644
--- a/icu4c/source/i18n/udateintervalformat.cpp
+++ b/icu4c/source/i18n/udateintervalformat.cpp
@@ -119,9 +119,9 @@
 U_DRAFT void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
-                UFormattedDateInterval* result,
                 UDate           fromDate,
                 UDate           toDate,
+                UFormattedDateInterval* result,
                 UErrorCode*     status) {
     if (U_FAILURE(*status)) {
         return;
diff --git a/icu4c/source/i18n/unicode/udateintervalformat.h b/icu4c/source/i18n/unicode/udateintervalformat.h
index 9777c4b..d8b52b7 100644
--- a/icu4c/source/i18n/unicode/udateintervalformat.h
+++ b/icu4c/source/i18n/unicode/udateintervalformat.h
@@ -261,23 +261,23 @@
  * UDateIntervalFormat object.
  * @param formatter
  *            The UDateIntervalFormat object specifying the format conventions.
- * @param result
- *            The UFormattedDateInterval to contain the result of the
- *            formatting operation.
  * @param fromDate
  *            The starting point of the range.
  * @param toDate
  *            The ending point of the range.
+ * @param result
+ *            The UFormattedDateInterval to contain the result of the
+ *            formatting operation.
  * @param status
  *            A pointer to a UErrorCode to receive any errors.
- * @draft ICU 64
+ * @draft ICU 67
  */
 U_DRAFT void U_EXPORT2
 udtitvfmt_formatToResult(
                 const UDateIntervalFormat* formatter,
-                UFormattedDateInterval* result,
                 UDate           fromDate,
                 UDate           toDate,
+                UFormattedDateInterval* result,
                 UErrorCode*     status);
 
 /**
diff --git a/icu4c/source/test/cintltst/cdateintervalformattest.c b/icu4c/source/test/cintltst/cdateintervalformattest.c
index 6635de2..fb5bc73 100644
--- a/icu4c/source/test/cintltst/cdateintervalformattest.c
+++ b/icu4c/source/test/cintltst/cdateintervalformattest.c
@@ -332,7 +332,7 @@
     {
         const char* message = "Field position test 1";
         const UChar* expectedString = u"27. September 2010, 15:00 – 2. März 2011, 18:30";
-        udtitvfmt_formatToResult(fmt, fdi, Date201009270800, Date201103021030, &ec);
+        udtitvfmt_formatToResult(fmt, Date201009270800, Date201103021030, fdi, &ec);
         assertSuccess("Formatting", &ec);
         static const UFieldPositionWithCategory expectedFieldPositions[] = {
             // category, field, begin index, end index
@@ -358,7 +358,7 @@
     {
         const char* message = "Field position test 2";
         const UChar* expectedString = u"27. September 2010, 15:00–22:00 Uhr";
-        udtitvfmt_formatToResult(fmt, fdi, Date201009270800, Date201009270800 + 7*_HOUR, &ec);
+        udtitvfmt_formatToResult(fmt, Date201009270800, Date201009270800 + 7*_HOUR, fdi, &ec);
         assertSuccess("Formatting", &ec);
         static const UFieldPositionWithCategory expectedFieldPositions[] = {
             // category, field, begin index, end index
