diff --git a/field_default_token.module b/field_default_token.module
index 812e408..4a65b56 100644
--- a/field_default_token.module
+++ b/field_default_token.module
@@ -215,9 +215,13 @@ function field_default_token_enlarge_max_length(&$element) {
  *   Root form element.
  */
 function field_default_token_fix_number_validation(&$element) {
+  $number_callbacks = array(
+    'number_field_widget_validate',
+    'bigint_field_widget_validate',
+  );
   if (!empty($element['#element_validate'])) {
     foreach ($element['#element_validate'] as &$callback) {
-      if ($callback === 'number_field_widget_validate') {
+      if (in_array($callback, $number_callbacks)) {
         $callback = 'field_default_token_number_field_widget_validate';
       }
     }
@@ -351,10 +355,18 @@ function field_default_token_field_ui_field_edit_form_validate($form, &$form_sta
  * Replacement for number_field_widget_validate().
  */
 function field_default_token_number_field_widget_validate($element, &$form_state) {
+  $field_info = field_info_field($element['#field_name']);
+  switch ($field_info['type']) {
+    case 'number_bigint':
+      $callback = 'bigint_field_widget_validate';
+      break;
+    default:
+      $callback = 'number_field_widget_validate';
+  }
   $value = $element['#value'];
   if (strpos($value, '[') !== FALSE) {
     // Token in default value, do not validate.
     return;
   }
-  number_field_widget_validate($element, $form_state);
+  $callback($element, $form_state);
 }
