diff --git a/warpLRA.m b/warpLRA.m
index 2f02e629dd1fe95105872fdee07249b6a5270516..516092d961aa8a1503f228e9473aa60d11f0c290 100644
--- a/warpLRA.m
+++ b/warpLRA.m
@@ -1,5 +1,5 @@
 function [PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,...
-    projM,projValue,projMask,projPos,projDispX,projDispY]...
+    projM,projValue,projMask,projPos,projDispX,projDispY,S]...
     = warpLRA(Value,Mask,Pos,DispX,DispY,k,varargin)
 %WARPLRA Warping low rank approximation
 %   Compute disparity update that best matches low-rank approximation
@@ -40,7 +40,8 @@ projValue(~projMask) = nan;
 projValue = SR.complete(projValue,'rank');
 
 %% Compute low-rank approximation
-[B,C] = SR.factorize(projValue);
+[B,C,~,S,~] = SR.factorize(projValue);
+S = diag(S);
 BMat = LF.LFToMat(B);
 MMat = BMat(:,1:k)*C(1:k,:);
 
diff --git a/warpLRAUpdate.m b/warpLRAUpdate.m
index 1ba52103215d882a3458b3f0f616775c94b570dd..d822649b6d0db9f502629e0db8893a01ece7e257 100644
--- a/warpLRAUpdate.m
+++ b/warpLRAUpdate.m
@@ -1,11 +1,11 @@
 function [dX,dY,PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,...
-    projM,projValue,projMask,projPos,projDispX,projDispY] = ...
+    projM,projValue,projMask,projPos,projDispX,projDispY,S] = ...
     warpLRAUpdate(Value,Mask,Pos,DispX,DispY,k,varargin)
 %WARPLRAUPDATE warping + low rank approximation + update
 %   Compute update that best matches low-rank approximation
 
 [PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,...
-    projM,projValue,projMask,projPos,projDispX,projDispY]...
+    projM,projValue,projMask,projPos,projDispX,projDispY,S]...
     = SR.warpLRA(Value,Mask,Pos,DispX,DispY,k,varargin{:});
 
 [dX,dY] = SR.pinvUpdate(projValue,projMask,projM,varargin{:});