diff --git a/date_api/date_api_ical.inc b/date_api/date_api_ical.inc
index 4911298..b8af232 100644
--- a/date_api/date_api_ical.inc
+++ b/date_api/date_api_ical.inc
@@ -702,8 +702,10 @@ function date_api_ical_build_rrule($form_values) {
   }
 
   // Grab the RRULE data and put them into iCal RRULE format.
-  $rrule .= 'RRULE:FREQ=' . (!array_key_exists('FREQ', $form_values) ? 'DAILY' : $form_values['FREQ']);
-  $rrule .= ';INTERVAL=' . (!array_key_exists('INTERVAL', $form_values) ? 1 : $form_values['INTERVAL']);
+  if (array_key_exists('FREQ', $form_values) && $form_values['FREQ'] != 'NONE') {
+    $rrule .= 'RRULE:FREQ=' . (!array_key_exists('FREQ', $form_values) ? 'DAILY' : $form_values['FREQ']);
+    $rrule .= ';INTERVAL=' . (!array_key_exists('INTERVAL', $form_values) ? 1 : $form_values['INTERVAL']);
+  }
 
   // Unset the empty 'All' values.
   if (array_key_exists('BYDAY', $form_values) && is_array($form_values['BYDAY'])) {
@@ -786,10 +788,12 @@ function date_api_ical_build_rrule($form_values) {
     if (!empty($ex_dates)) {
       sort($ex_dates);
       $rrule .= chr(13) . chr(10) . 'EXDATE:' . implode(',', $ex_dates);
+      // RDATE ONLY SUPPORT: RRULE could by empty, and no \r\n is needed
+      $rrule .= (!empty($rrule) ? chr(13) . chr(10) : '') . 'RDATE:' . implode(',', $ex_dates);
     }
   }
   elseif (!empty($form_values['EXDATE'])) {
-    $rrule .= chr(13) . chr(10) . 'EXDATE:' . $form_values['EXDATE'];
+    $rrule .= (!empty($rrule) ? chr(13) . chr(10) : '') . 'EXDATE:' . $form_values['EXDATE'];
   }
 
   // Exceptions dates go last, on their own line.
diff --git a/date_repeat/date_repeat.module b/date_repeat/date_repeat.module
index 61d971b..53b80dd 100644
--- a/date_repeat/date_repeat.module
+++ b/date_repeat/date_repeat.module
@@ -54,6 +54,7 @@ function date_repeat_freq_options() {
     'WEEKLY' => t('Weekly', array(), array('context' => 'datetime_singular')),
     'MONTHLY' => t('Monthly', array(), array('context' => 'datetime_singular')),
     'YEARLY' => t('Yearly', array(), array('context' => 'datetime_singular')),
+    'NONE' => t('None (only included dates)', array(), array('context' => 'datetime_singular')),
   );
 }
 
diff --git a/date_repeat/date_repeat_calc.inc b/date_repeat/date_repeat_calc.inc
index d840df6..5bb1183 100644
--- a/date_repeat/date_repeat_calc.inc
+++ b/date_repeat/date_repeat_calc.inc
@@ -46,7 +46,7 @@ function _date_repeat_calc($rrule, $start, $end, $exceptions, $timezone, $additi
   $rrule = date_ical_parse_rrule('RRULE:', $rrule);
 
   // These default values indicate there is no RRULE here.
-  if ($rrule['FREQ'] == 'NONE' || (isset($rrule['INTERVAL']) && $rrule['INTERVAL'] == 0)) {
+  if (empty($additions) && $rrule['FREQ'] == 'NONE' || (isset($rrule['INTERVAL']) && $rrule['INTERVAL'] == 0)) {
     return array();
   }
 
diff --git a/date_repeat/date_repeat_form.inc b/date_repeat/date_repeat_form.inc
index 76023d7..0fc438f 100644
--- a/date_repeat/date_repeat_form.inc
+++ b/date_repeat/date_repeat_form.inc
@@ -85,7 +85,7 @@ function _date_repeat_rrule_process($element, &$form_state, $form) {
   $element['FREQ'] = array(
     '#type' => 'select',
     '#title' => t('Repeats', array(), array('context' => 'Date repeat')),
-    '#default_value' => !empty($rrule['FREQ']) ? $rrule['FREQ'] : 'WEEKLY',
+    '#default_value' => !empty($rrule['FREQ']) ? $rrule['FREQ'] : (empty($additions) ? 'WEEKLY' : 'NONE'),
     '#options' => date_repeat_freq_options(),
     '#prefix' => '<div class="date-repeat-input">',
     '#suffix' => '</div>',
@@ -646,6 +646,9 @@ function _date_repeat_rrule_process($element, &$form_state, $form) {
       'invisible' => array(
         ":input[name=\"{$element['#name']}[FREQ]\"]" => array('value' => 'NONE'),
       ),
+      'checked' => array(
+        ":input[name=\"{$element['#name']}[FREQ]\"]" => array('value' => 'NONE'),
+      )
     ),
     '#default_value' => empty($form_state['num_additions'][$instance]) ? 0 : 1,
   );
@@ -886,7 +889,10 @@ function date_repeat_merge($form_values, $element) {
   unset($form_values['monthly']);
   unset($form_values['yearly']);
 
-  if (array_key_exists('range_of_repeat', $form_values)) {
+  if (array_key_exists('FREQ', $form_values) && $form_values['FREQ'] == "NONE" && array_key_exists('range_of_repeat', $form_values)) {
+    $form_values['range_of_repeat'] = 'NONE';
+  }
+  else if (array_key_exists('range_of_repeat', $form_values)) {
     switch ($form_values['range_of_repeat']) {
       case 'COUNT':
         $form_values['COUNT'] = $form_values['count_child'];
@@ -975,7 +981,7 @@ function date_repeat_rrule_validate($element, &$form_state) {
   $parents = $element['#parents'];
   array_pop($parents);
   $field_values = drupal_array_get_nested_value($form_state['values'], $parents);
-  if ($field_values['show_repeat_settings'] === 0 || $field_values['rrule']['FREQ'] === 'NONE') {
+  if ($field_values['show_repeat_settings'] === 0) {
     form_set_value($element, NULL, $form_state);
     return;
   }
diff --git a/date_repeat_field/date_repeat_field.module b/date_repeat_field/date_repeat_field.module
index d4d4c90..bd21524 100644
--- a/date_repeat_field/date_repeat_field.module
+++ b/date_repeat_field/date_repeat_field.module
@@ -336,7 +336,7 @@ function date_repeat_field_widget_validate($element, &$form_state) {
   $rrule_values = date_repeat_merge($input['rrule'], $element['rrule']);
 
   // If no repeat information was set, treat this as a normal, non-repeating value.
-  if ($rrule_values['FREQ'] == 'NONE' || empty($input['show_repeat_settings'])) {
+  if (empty($input['show_repeat_settings'])) {
     $item['rrule'] = NULL;
     form_set_value($element, $item, $form_state);
     return;
@@ -475,7 +475,7 @@ function date_repeat_build_dates($rrule = NULL, $rrule_values = NULL, $field, $i
   }
   else {
     // No UNTIL and no COUNT?
-    return array();
+    $end_datetime = $start_datetime;
   }
 
   // Split the RRULE into RRULE, EXDATE, and RDATE parts.
