diff --git a/filefield_paths.install b/filefield_paths.install
index 0ce63cb..234c32a 100644
--- a/filefield_paths.install
+++ b/filefield_paths.install
@@ -63,6 +63,13 @@ function filefield_paths_schema_alter(&$schema) {
     'not null' => TRUE,
     'default' => '',
   );
+  $schema['file_managed']['fields']['ffp_processed'] = array(
+    'description' => 'Flag if file is processed by filefield_path module.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0
+  );
 }
 
 /**
@@ -78,6 +85,13 @@ function filefield_paths_install() {
     'not null' => TRUE,
     'default' => '',
   ));
+  db_add_field('file_managed', 'ffp_processed', array(
+    'description' => 'Flag if file is processed by filefield_path module.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0
+  ));
   db_update('file_managed')
     ->expression('origname', 'filename')
     ->execute();
@@ -88,6 +102,7 @@ function filefield_paths_install() {
  */
 function filefield_paths_uninstall() {
   db_drop_field('file_managed', 'origname');
+  db_drop_field('file_managed', 'ffp_processed');
 }
 
 /**
@@ -192,3 +207,17 @@ function filefield_paths_update_7106() {
     'default' => ''
   ));
 }
+
+/**
+ * Add ffp_processed flag to file_managed table
+ */
+function filefield_paths_update_7107() {
+  db_add_field('file_managed', 'ffp_processed', array(
+    'description' => 'Flag if file is processed by filefield_path module.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0
+  ));
+  //@todo: is there any way, to get what files are processed?
+}
\ No newline at end of file
diff --git a/modules/file.inc b/modules/file.inc
index 9870939..2691d44 100755
--- a/modules/file.inc
+++ b/modules/file.inc
@@ -55,14 +55,13 @@ function file_filefield_paths_get_fields(&$entity, &$ffp) {
       if ($field['type'] == 'file' && isset($entity->{$field['field_name']}) && is_array($entity->{$field['field_name']})) {
         foreach ($entity->{$field['field_name']} as $language) {
           foreach ($language as $file) {
-            $new = isset($file['new']) ? $file['new'] : FALSE;
             $file = file_load($file['fid']);
 
             $ffp['#files'][] = array(
               'field' => (array) $file,
               'module' => $field['module'],
               'name' => $field['field_name'],
-              'new' => $new || $file->timestamp == REQUEST_TIME,
+              'new' => $file->ffp_processed ? FALSE : TRUE,
             );
 
             $ffp['#types'][$field['field_name']] = TRUE;
diff --git a/modules/filefield_paths.inc b/modules/filefield_paths.inc
index af575b0..5d21e50 100644
--- a/modules/filefield_paths.inc
+++ b/modules/filefield_paths.inc
@@ -57,18 +57,22 @@ function filefield_paths_filefield_paths_process_file($new, &$file, $settings, &
     // Finalize files if necessary.
     $dirname = dirname($file['filepath']['new']);
     if ($dirname != dirname($file['field']['uri']) || $file['filename']['new'] != $file['field']['filename']) {
-      if (file_prepare_directory($dirname, FILE_CREATE_DIRECTORY) && file_move((object) $file['field'], $file['filepath']['new'])) {
-        $update->entity = TRUE;
+      if (file_prepare_directory($dirname, FILE_CREATE_DIRECTORY)) {
+        $entity_info = entity_get_info($type);
+        $file['field']['ffp_processed'] = $entity->$entity_info['entity keys']['id'];
+        if (file_move((object) $file['field'], $file['filepath']['new'])) {
+          $update->entity = TRUE;
 
-        // Fix reference to old paths.
-        $file['filepath']['new'] = str_replace($file['filename']['old'], $file['filename']['new'], $file['filepath']['new']);
+          // Fix reference to old paths.
+          $file['filepath']['new'] = str_replace($file['filename']['old'], $file['filename']['new'], $file['filepath']['new']);
 
-        // Process regular expression.
-        _filefield_paths_replace_path($file['filepath']['old'], $file['filepath']['new'], $entity, $update);
+          // Process regular expression.
+          _filefield_paths_replace_path($file['filepath']['old'], $file['filepath']['new'], $entity, $update);
 
-        // Store new filename in file Array
-        $file['field']['filename'] = $file['filename']['new'];
-        $file['field']['uri'] = $file['filepath']['new'];
+          // Store new filename in file Array
+          $file['field']['filename'] = $file['filename']['new'];
+          $file['field']['uri'] = $file['filepath']['new'];
+        }
       }
     }
   }
diff --git a/modules/image.inc b/modules/image.inc
index 2d6ead0..4d67d74 100755
--- a/modules/image.inc
+++ b/modules/image.inc
@@ -55,14 +55,13 @@ function image_filefield_paths_get_fields(&$entity, &$ffp) {
       if ($field['type'] == 'image' && isset($entity->{$field['field_name']}) && is_array($entity->{$field['field_name']})) {
         foreach ($entity->{$field['field_name']} as $language) {
           foreach ($language as $file) {
-            $new = isset($file['new']) ? $file['new'] : FALSE;
             $file = file_load($file['fid']);
 
             $ffp['#files'][] = array(
               'field' => (array) $file,
               'module' => $field['module'],
               'name' => $field['field_name'],
-              'new' => $new || $file->timestamp == REQUEST_TIME,
+              'new' => $file->ffp_processed ? FALSE : TRUE,
             );
 
             $ffp['#types'][$field['field_name']] = TRUE;
