--- imagecache.orig/imagecache.module	2007-10-20 08:40:16.000000000 +0200
+++ imagecache/imagecache.module	2007-11-14 11:16:42.000000000 +0100
@@ -239,6 +239,10 @@
       'label' => $rulename .' as link',
       'field types' => array('image'),
     );
+    $formatters[$rulename .'_linked_source'] = array(
+      'label' => $rulename .' as link source',
+      'field types' => array('image'),
+    );
   }
   return $formatters;
 }
@@ -260,6 +264,10 @@
   if (in_array($formatter_check, (array) $rules)) {
     return theme('imagecache_formatter', $field, $item, $formatter);
   }
+  $formatter_check = preg_replace('/_linked_source$/', '', $formatter);
+  if (in_array($formatter_check, (array) $rules)) {
+    return theme('imagecache_formatter', $field, $item, $formatter);
+  }
 }
 
 function _imagecache_file_load($fid = NULL) {
@@ -732,6 +740,11 @@
     $image = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
     $output = l($image, 'node/'. $item['nid'], array(), NULL, NULL, FALSE, TRUE);
   }
+  elseif(preg_match('/_linked_source$/', $formatter)){
+    $formatter = preg_replace('/_linked_source$/', '', $formatter);
+    $image = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
+    $output = l($image, $item['filepath'], array(), NULL, NULL, FALSE, TRUE);
+  }
   else {
     $output = theme('imagecache', $formatter, $item['filepath'], $item['alt'], $item['title']);
   }
