diff --git a/hms_field.module b/hms_field.module
index bc8efe6..61854b5 100644
--- a/hms_field.module
+++ b/hms_field.module
@@ -129,7 +129,7 @@ function hms_field_field_formatter_info() {
     'hms_default_formatter' => array(
       'label' => t('Hours Minutes and Seconds'),
       'field types' => array('hms_field'),
-      'settings' => array('format' => 'h:mm', 'leading_zero' => TRUE),
+      'settings' => array('format' => 'h:mm', 'leading_zero' => TRUE, 'separator_hm' => ':', 'separator_ms' => ':'),
     ),
     'hms_natural_language_formatter' => array(
       'label' => t('Natural language'),
@@ -152,6 +152,10 @@ function hms_field_field_formatter_settings_summary($field, $instance, $view_mod
     $summary .= t('Format: @format', array('@format' => $settings['format']));
     $summary .= '<br>';
     $summary .= t('Leading zero: @zero', array('@zero' => ($settings['leading_zero']?t('On'):t('Off'))));
+    $summary .= '<br>';
+    $summary .= t('H:M Separator: \'@separator\'', array('@separator' => $settings['separator_hm']));
+    $summary .= '<br>';
+    $summary .= t('M:S Separator: \'@separator\'', array('@separator' => $settings['separator_ms']));
   }
   elseif ($display['type'] == 'hms_natural_language_formatter') {
     $factors = _hms_factor_map(TRUE);
@@ -198,6 +202,24 @@ function hms_field_field_formatter_settings_form($field, $instance, $view_mode,
       '#description' => t('Leading zero values will be displayed when this option is checked'),
       '#default_value' => $settings['leading_zero'],
     );
+    $element['separator_hm'] = array(
+      '#type' => 'textfield',
+      '#title' => t('H:M Separator'),
+      '#description' => t('Separator used between hours and minutes'),
+      '#default_value' => $settings['separator_hm'],
+      '#required' => TRUE,
+      '#size' => 1,
+      '#maxlength' => 1,
+    );
+    $element['separator_ms'] = array(
+      '#type' => 'textfield',
+      '#title' => t('M:S Separator'),
+      '#description' => t('Separator used between minutes and seconds'),
+      '#default_value' => $settings['separator_ms'],
+      '#required' => TRUE,
+      '#size' => 1,
+      '#maxlength' => 1,
+    );
   }
   elseif ($display['type'] == 'hms_natural_language_formatter') {
     $options = array();
@@ -246,6 +268,8 @@ function hms_field_field_formatter_view($entity_type, $entity, $field, $instance
       $element[$delta]['#value'] = $item['value'];
       $element[$delta]['#format'] = $display['settings']['format'];
       $element[$delta]['#leading_zero'] = $display['settings']['leading_zero'];
+      $element[$delta]['#separator_hm'] = $display['settings']['separator_hm'];
+      $element[$delta]['#separator_ms'] = $display['settings']['separator_ms'];
     }
   }
   else if ($display['type'] === 'hms_natural_language_formatter') {
@@ -278,7 +302,7 @@ function hms_field_field_formatter_view($entity_type, $entity, $field, $instance
 function hms_field_theme($existing, $type, $theme, $path) {
   return array(
     'hms' => array(
-      'variables' => array('value' => 0, 'format' => 'h:mm', 'leading_zero' => TRUE, 'running_since' => 0, 'offset' => 0, 'default_value' => 0),
+      'variables' => array('value' => 0, 'format' => 'h:mm', 'leading_zero' => TRUE, 'separator_hm' => ':', 'separator_ms' => ':', 'running_since' => 0, 'offset' => 0, 'default_value' => 0),
     ),
     'hms_natural_language' => array(
       'variables' => array('value' => 0, 'format' => 'w:d:h:m:s', 'separator' => ', ', 'last_separator' => ' and '),
@@ -321,7 +345,7 @@ function theme_hms($variables) {
     _hms_add_running_js();
   }
   $html = '<span class="' . implode(' ' , $classes) . '">';
-  $html .= _hms_seconds_to_formatted($value, $variables['format'], $variables['leading_zero']);
+  $html .= _hms_seconds_to_formatted($value, $variables['format'], $variables['leading_zero'], $variables['separator_hm'], $variables['separator_ms']);
   $html .= '</span>';
   return $html;
 }
@@ -502,7 +526,7 @@ function _hms_formatted_to_seconds($str, $format='h:m:s') {
 /**
  * Returns a formatted string form the number of seconds.
  */
-function _hms_seconds_to_formatted($seconds, $format='h:mm', $leading_zero = TRUE) {
+function _hms_seconds_to_formatted($seconds, $format='h:mm', $leading_zero = TRUE, $separator_hm = ':', $separator_ms = ':') {
 
   // Return NULL on empty string.
   if ($seconds === '') {
@@ -534,15 +558,20 @@ function _hms_seconds_to_formatted($seconds, $format='h:mm', $leading_zero = TRU
   $format = explode(':', $format);
 
   foreach($format as $key) {
+    switch (substr($key, 0, 1)) {
+      case 'h': $separator = $separator_hm; break;
+      case 'm': $separator = $separator_ms; break;
+      default: $separator = '';
+    }
     if (!$leading_zero && (empty($values[substr($key, 0, 1)]) || !$values[substr($key, 0, 1)])) {
       continue;
     }
     $leading_zero = TRUE;
-    $str .= sprintf('%0'.strlen($key).'d', $values[substr($key, 0, 1)]) . ':';
+    $str .= sprintf('%0'.strlen($key).'d', $values[substr($key, 0, 1)]) . $separator;
   }
   if (!strlen($str)) {
     $key = array_pop($format);
-    $str = sprintf('%0'.strlen($key).'d', 0) . ':';
+    $str = sprintf('%0'.strlen($key).'d', 0) . $separator;
   }
   return substr($str, 0, -1);
 }
