diff --git a/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php b/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
--- a/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
+++ b/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
@@ -366,10 +366,11 @@
           $this->cursorMinute -= $interval;
           $this->rewindMinute();
           break;
+        case self::FREQUENCY_SECONDLY:
         default:
           throw new Exception(
             pht(
-              'BYSETPOS not yet supported for FREQ "%s".',
+              'RRULE specifies BYSETPOS with FREQ "%s", but this is invalid.',
               $frequency));
       }
 
diff --git a/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php b/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
--- a/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
+++ b/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
@@ -1040,6 +1040,55 @@
       $expect);
   }
 
+  public function testSecondlyRecurrenceRules() {
+    $tests = array();
+    $expect = array();
+
+    $tests[] = array();
+    $expect[] = array(
+      '19970902T090000Z',
+      '19970902T090001Z',
+      '19970902T090002Z',
+    );
+
+    $tests[] = array(
+      'INTERVAL' => 2,
+    );
+    $expect[] = array(
+      '19970902T090000Z',
+      '19970902T090002Z',
+      '19970902T090004Z',
+    );
+
+    $tests[] = array(
+      'INTERVAL' => 90061,
+    );
+    $expect[] = array(
+      '19970902T090000Z',
+      '19970903T100101Z',
+      '19970904T110202Z',
+    );
+
+    $tests[] = array(
+      'BYSECOND' => array(0),
+      'BYMINUTE' => array(1),
+      'DTSTART' => '20100322T120100Z',
+    );
+    $expect[] = array(
+      '20100322T120100Z',
+      '20100322T130100Z',
+      '20100322T140100Z',
+    );
+
+    $this->assertRules(
+      array(
+        'FREQ' => 'SECONDLY',
+        'COUNT' => 3,
+        'DTSTART' => '19970902T090000Z',
+      ),
+      $tests,
+      $expect);
+  }
 
   private function assertRules(array $defaults, array $tests, array $expect) {
     foreach ($tests as $key => $test) {