diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module
index 70f8c5c..9b075b9 100644
--- a/modules/aggregator/aggregator.module
+++ b/modules/aggregator/aggregator.module
@@ -488,7 +488,7 @@ function aggregator_save_category($edit) {
  * @param $edit
  *   An associative array describing the feed to be added/edited/deleted.
  */
-function aggregator_save_feed($edit) {
+function aggregator_save_feed(&$edit) {
   if (!empty($edit['fid'])) {
     // An existing feed is being modified, delete the category listings.
     db_delete('aggregator_category_feed')
diff --git a/modules/aggregator/aggregator.test b/modules/aggregator/aggregator.test
index 8b95d6e..098da8c 100644
--- a/modules/aggregator/aggregator.test
+++ b/modules/aggregator/aggregator.test
@@ -360,6 +360,11 @@ class AddFeedTestCase extends AggregatorTestCase {
     $this->assertEqual($this->getUrl(), url('admin/config/services/aggregator/add/feed', array('absolute' => TRUE)), 'Directed to correct url.');
     $this->assertTrue($this->uniqueFeed($feed->title, $feed->url), 'The feed is unique.');
 
+    // Programatic feed.
+    $programatic_feed = $this->getFeedEditArray('http://example.com/rss.xml');
+    aggregator_save_feed($programatic_feed);
+    $this->assertTrue($programatic_feed['fid'], 'Feed id set by aggregator_feed_save()');
+
     // Check feed source.
     $this->drupalGet('aggregator/sources/' . $feed->fid);
     $this->assertResponse(200, 'Feed source exists.');
