diff --git a/CHANGELOG.md b/CHANGELOG.md
index 708eeb2..30acb85 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 0.12.0+1
+  * Fixes bug with printing a percent or permille format with no fraction
+  part and a number with no integer part. For example, print 0.12 with a
+  format pattern of "#%". The test for whether
+  there was a printable integer part tested the basic number, so it ignored the
+  integer digits. This was introduced in 0.11.2 when we stopped multiplying
+  the input number in the percent/permille case.
+
 ## 0.12.0
   * Make withLocale and defaultLocale use a zone, so async operations
     inside withLocale also get the correct locale. Bumping the version
diff --git a/lib/src/intl/number_format.dart b/lib/src/intl/number_format.dart
index 2e23d35..db4c7a4 100644
--- a/lib/src/intl/number_format.dart
+++ b/lib/src/intl/number_format.dart
@@ -310,7 +310,7 @@
     var integerDigits = _integerDigits(integerPart, extraIntegerDigits);
     var digitLength = integerDigits.length;
 
-    if (_hasPrintableIntegerPart(integerPart)) {
+    if (_hasIntegerDigits(integerDigits)) {
       _pad(minimumIntegerDigits - digitLength);
       for (var i = 0; i < digitLength; i++) {
         _addDigit(integerDigits.codeUnitAt(i));
@@ -386,11 +386,12 @@
 
   /**
    * Return true if we have a main integer part which is printable, either
-   * because we have digits left of the decimal point, or because there are
-   * a minimum number of printable digits greater than 1.
+   * because we have digits left of the decimal point (this may include digits
+   * which have been moved left because of percent or permille formatting),
+   * or because the minimum number of printable digits is greater than 1.
    */
-  bool _hasPrintableIntegerPart(x) =>
-      x > 0 || minimumIntegerDigits > 0;
+  bool _hasIntegerDigits(String digits) =>
+      digits.isNotEmpty || minimumIntegerDigits > 0;
 
   /** A group of methods that provide support for writing digits and other
    * required characters into [_buffer] easily.
diff --git a/pubspec.yaml b/pubspec.yaml
index a575d39..b1ad6c1 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: intl
-version: 0.12.0
+version: 0.12.0+1
 author: Dart Team <misc@dartlang.org>
 description: Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
 homepage: https://www.dartlang.org
@@ -27,5 +27,4 @@
     - test/message_extraction/message_extraction_no_deferred_test.dart
     - test/message_extraction/message_extraction_test.dart
     - test/message_extraction/really_fail_extraction_test.dart
-    - test/message_extraction/really_fail_extraction_test.dart
     - test/intl_message_basic_example_test.dart # invalid import under pub's package-layout
diff --git a/test/number_format_test.dart b/test/number_format_test.dart
index 1ff898b..b6bc33a 100644
--- a/test/number_format_test.dart
+++ b/test/number_format_test.dart
@@ -143,6 +143,14 @@
     }
   });
 
+  test('Percent with no decimals and no integer part', () {
+    var number = new NumberFormat("#%");
+      var formatted = number.format(0.12);
+      expect(formatted, "12%");
+      var readBack = number.parse(formatted);
+      expect(0.12, readBack);
+  });
+
   // We can't do these in the normal tests because those also format the
   // numbers and we're reading them in a format where they won't print
   // back the same way.
