diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index 6f7b657cf376841892e677f9f1e33745b13f4424..96eb55b717ea2c4eb741e6ad30f304d42a7bc9ec 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -322,7 +322,7 @@ module OrientDb
     end
 
     def get_max_from_edge(edge_class, type)
-      max = connection.command 'SELECT max(#{type}("#{edge_class}").size()) FROM LearningObject'
+      max = connection.command "SELECT max(#{type}('#{edge_class}').size()) FROM LearningObject"
       max["result"][0]["max"]
     end
 
diff --git a/app/workers/score_calculator_worker.rb b/app/workers/score_calculator_worker.rb
index 6f1f6f99d15cd16480111219be944ee79ab6ccc3..794b410b2567e51419b37d090016afd5f284c0e5 100644
--- a/app/workers/score_calculator_worker.rb
+++ b/app/workers/score_calculator_worker.rb
@@ -25,17 +25,37 @@ class ScoreCalculatorWorker
     score += weights[:description] unless object.description.blank?
 
     # range to 250 points, for normalized likes ( maxLikes/actualLike => [0..1] )
-    likes = learning_object_repository.count_likes(object)
-    score += (likes / learning_object_repository.max_likes)*weights[:likes]  unless likes < 1
+    score += divide_by_max(
+                            learning_object_repository.count_likes(object),
+                            learning_object_repository.max_likes,
+                            weights[:likes]
+                          )
 
     # range to 200 points, for normalized views ( maxLikes/actualLike => [0..1] )
-    views = learning_object_repository.count_views(object)
-    score += (views / learning_object_repository.max_views)*weights[:views] unless views < 1
-
-    downloads = learning_object_repository.count_downloads(object)
-    score += (downloads / learning_object_repository.max_downloads)*weights[:downloads] unless downloads < 1
+    score += divide_by_max(
+                            learning_object_repository.count_views(object),
+                            learning_object_repository.max_views,
+                            weights[:views]
+                          )
+
+    # downloads
+    score += divide_by_max(
+                            learning_object_repository.count_downloads(object),
+                            learning_object_repository.max_downloads,
+                            weights[:downloads]
+                          )
 
     learning_object_repository.update_property(object, 'score', score)
     end
   end
+
+  private
+
+  def divide_by_max(i, max, weight)
+    if (i > 0 && max > 0) && (i <= max)
+      (i / max) * weight
+    else
+      0
+    end
+  end
 end